2016-06-09 2 views
4

은 단순히이있는 경우 :상태 비 저장 구성 요소에 메소드를 정의하는 방법은 무엇입니까?

const App = function() { 
    return (
     <div>{this.renderList()}</div> 
    ) 

} 

가 어떻게이 renderList 방법을 정의합니까?

const renderList = function() {} (var 또는 let)과 연결할 수 없습니다. 나는 renderList() {}을 할 수 없다.

올바른 구문은 무엇입니까?

+0

renderList에서 수행 할 작업을 선택 하시겠습니까? –

+0

@JohnRuddell 목록을 렌더링하십시오. – Yeats

+0

알겠습니다. 나는 어떤 종류의 목록을 의미합니까? 이 구성 요소를 렌더링 하는게 뭐야? renderList의 내용은 무엇입니까? –

답변

0

당신이

const App = function() { 

    return (
     <div>{renderList()}</div> 
    ) 

} 
    function renderList(){ 
     return "this variables" 
    } 

처럼 뭔가를하고 싶은 것은 물론 이것은 나쁜 방법 당신은 당신이 소품과 비 저장 구성 요소와 기능을 전달한다는 것이다 권장 항상 바보 잡습니다입니다. 당신은 예를 들어 REDUX를 사용하는 경우이

import {connect} from 'react-redux'; 
const App = (props) => { 
    return (
     <div> {props.renderList} </div> 
    ) 
} 
function renderList(){ 
    return "your render logic" 
} 
export default connect(null, {renderList})(App) 
+0

슬프게도 그 중 하나가 작동하지 않습니다. 나머지 부분과 같은 오류. "renderList"메서드가 없습니다. – Yeats

+0

내 편집 된 답변을 확인하고 @ ryudice의 – Abiodun

+0

나쁜 접근 방식은 무엇입니까? redux를 사용하지 않고 무엇인지 압니까? – Yeats

0

당신이

const App =() => { 
    return (
    <div>{this.renderList()}</div> 
) 
} 

App.renderList =() => { 
    return 'This is my list' 
} 
+0

'this.constructor.renderList()'는 당신이 찾고있는 것입니다 –

2
const App = function() { 
    const renderList =()=> { 
     return "this variables" 
    } 

    return (
     <div>{renderList()}</div> 
    ) 

} 
+0

그게 작동하지 않습니다. 그리고 나는 그것이 화살표 기능을 싫어해서 기쁘다. :) – Yeats

+0

왜 화살 기능이 싫은가요? –

+0

내 경우에는 효과가 있습니다. this.renderList()와 같이 호출했는지 확인하십시오. 이 경우, 위와 같이 renderList()를 호출해야합니다 (이 항목이없는 경우) – hkg328

9

내가 인라인 Stateless Functions 때문에 이것에 대한 해결책을 줄 주저 뭔가를 시도 할 수와 같은 구성 요소가 렌더링 할 수 있습니다 말 방법이 없어야합니다. 메소드를 원하면 Class을 사용해야하며 클래스 사용에 문제가 없습니다. 그것 모두는 당신이해야 할 일을 기반으로합니다. Stateless Functions은 메소드가 필요하지 않은 무언가를 렌더링하거나 클래스 또는 클래스와 관련하여이 컨텍스트를 렌더링하는 데 매우 가볍도록 설계되었습니다.

해야합니다.

class App extends Component { 
    constructor(){ 
     super(); 
     // note this is a Stateless Component because its a react class without a state defined. 
    } 
    renderList =() => { 
     return <span>Something Here</span>; 
    } 
    render() { 
     return <div>{this.renderList()}</div> 
    } 
} 

내가 권하고 싶지 않다 (그러나 당신이 그것을 원하는 방식으로 문제를 해결 않음) 하는 해킹 방법은 다음과 같이 될 것이다.

const App =() => { 
    let renderList =() => { 
     return <span>Something Here</span> 
    } 
    return <div>{renderList()}</div> 
} 
+0

여기에 인라인 상태 비 저장 함수가 없습니다. React 문서에서는 메소드가 있어야하는 상태가 아닌 구성 요소에 대해서는 언급하지 않습니다. 그리고 나는 당신이'this.renderList()'를 추천하는 것이 믿을 수 없을만큼 재미 있다는 것을 알지만, 다른 질문에서는 this.renderList를 사용하고 괄호를 사용하도록 나를 훈계라고합니다. LOL. – Yeats

+0

@ 예, 답안 끝에 무국적 기능을 제공합니다. 나는 상태 비 저장 컴포넌트가 메소드를 가지고 있지 않다고 말한 적이 없다. 나의 응답은 상태 비 저장 컴포넌트에 대한 메소드를 가지고있다. –

+0

상태 비 저장 함수는 메소드를 가지고 있지 않다고 말합니다. 'var myStatelessFunction = function (props) {}'... is is different ... 'class myStatelessComponent extends Component' –

관련 문제