2017-11-19 3 views
-3
외부

에서 컴포넌트 메소드를 호출 할 때 나는 반응 구성 요소를 아래와 같이이 확인되지 않은 유형 :반작용 -

을 :

var Dog = React.createClass({ 
    bark: function() { 
    alert('bow'); 
    }, 

    render: function() { 
    return (<div>Dog</div>); 
    } 
}); 

하지만 아래와 같이 Dog의 요소를 작성하여 bark 메소드를 호출하려고 할 때

var doge = React.createElement(Dog, null); 
console.log(doge); 
doge.bark(); 

나는 Uncaught TypeError: doge.bark is not a function이됩니다. 그러나 크롬의 콘솔에 내가 반응에 초보자입니다 doge 객체

enter image description here

에 껍질 방법을 볼 수 있습니다. 아무도 실제로 뒤에서 무슨 일이 벌어지고 있는지 설명 할 수 있습니까?

편집 : 사실 우리가 React.createElement 방법에 의해 생성의 요소에서 구성 요소의 방법에 액세스 할 수없는 이유를 알고 싶어

? 제발 누군가 설명해주세요.

+0

1) 프로그램 전체에서 개, 개 및 개를 철자가 필요합니다. – SteveB

답변

0

당신은 개와 철자가 아닌 개와 같은 방식으로 개를 철자하고 대문자로 입력해야합니다. 그런 다음 렌더링 기능을 변경하여 다음과 같이 껍질 기능을 호출하십시오.

render: function() { 
    return (<div>{this.bark()}</div>); 
} 

경고 기능을 console.log로 변경합니다.

코드의 마지막 세 줄은 반응 구성 요소를 개체로 처리하려고합니다.

render: function() { 
    this.bark() /*called function on render*/ 
    return (<div></div>); 
} 
+0

당신은 제 질문을받지 못했습니다. 내 질문은'React.createElement' 메쏘드에 의해 ** component **의 ** element **를 만들고 그 엘리먼트의 메쏘드를 호출 할 때 그 오류를 던지는 것이다. 왜 메소드에 액세스 할 수 없습니까? – Sattyaki

+0

참조 : https://stackoverflow.com/questions/24841855/react-js-access-to-component-methods – SteveB