2017-12-06 1 views
1

반응 I 기능 abc는 반응 클래스의 외부에서 정의이쓰기 기능은 구성 요소

function abc(){ 
    return 'abc' 
} 
class MyComponent extends React.Component { 
    static abc = abc; 
    render() { return <h1>{this.abc}</h1>; } 
} 

같은 코드를 본 적이있다. 저자가 왜 그렇게했는지, 왜 수업 내에서 그렇게 할 수 없는지에 대한 단서가 없습니다.

+0

어디에서 보셨습니까? 참조 할 수 있니? – nikamanish

+0

@nikamanish https://egghead.io/lessons/react-write-compound-components –

답변

3

이들은 ES6 static methods이며 React에만 해당하는 것은 아닙니다. 이들은 컴포넌트 클래스의 멤버이지 컴포넌트의 인스턴스가 아닙니다. 그들은 React에서 광범위하게 사용되지 않지만 유용 할 수 있습니다. React docs에 언급 된 경우도 있습니다.

때때로 React 구성 요소에 정적 메서드를 정의하는 것이 유용합니다. 예를 들어, 릴레이 컨테이너는 정적 메서드 getFragment를 으로 노출시켜 GraphQL 조각의 구성을 용이하게합니다.

모든 구성 요소가 공유하는 구성 요소의 공통 구성원으로 사용할 수 있습니다. 아이디어를 제공하기 위해 static members of a React classdisplayNamedefaultProps입니다.

Static methods in React도 참조하십시오. 보시다시피, 정적 메서드를 사용하는 경우는 많지 않습니다.

+0

https://teamtreehouse.com/community/what-is-a-good-usecase-for-the-es2015-static도 참조하십시오. -methods 특히 위의 경우 abc 함수가 노출되도록 해당 페이지 – Dane

+0

에 대한 세 번째 대답은 무엇입니까? –

+0

나는 당신이 의미하는 바가 무엇인지 알지 못하지만, 네, 당신은'MyComponent'의 어떤 인스턴스에서든 호출 할 수 있습니다. – Dane

관련 문제