2017-03-22 7 views
0

이 "역설"을위한 깨끗한 솔루션이 있다면 어떤 아이디어가 있습니까?하위 액세스 상위 구성 요소

class Container extends Component { 
    render() { 
     <Parent> // ---------v 
      <Child parent={Parent} /> // Reference to "Parent" 
     </Parent> 
    } 
} 

문제는 <Child><Parent> 전에 렌더링되는 것을 물론이다.

궁극적으로 목표는 <Parent> 인 인스턴스 메서드를 <Child>에서 호출 할 수있게하는 것입니다. 같은 (ref) 같은

이미 시도 해결, 콜백 함수 (getParentReference()), cloneElement() 또는 this._reactInternalInstance을 사용하여 새 소품으로 추가하여 기준을 통과,하지만 그들 중 누구도 (매우 해키되는 것을 떨어져) 일 것 같았다.

+0

을 참조하십시오. 매개 변수로 메서드를 전달할 수 있습니다. '' – Abhishek

+0

정말로 그것을하고 싶다면, prop로 필요한 메소드를 자식으로 전달하십시오. – dfsq

+0

@Abhishek, @ dfsq : 메서드는 _within_''... – kraftwer1

답변

0

콜백 함수를 사용해야합니다.

콜백 기능

부모는 다음과 같이 소품으로 아이에 함수를 전달할 것 :

<MyChild myFunc={this.handleChildFunc.bind(this)} /> 

을 그리고 아이가 너무 좋아 그 함수를 호출 할 것이다 :

this.props.myFunc(); 

그리고 아이가 propotype에 선언 된이 함수를 필요로한다는 것을 잊지 마십시오 :

MyChild.propTypes = { 
    myFunc: React.PropTypes.func, 
}; 

자세한 내용은 8 no-Flux strategies for React component communication

+0

감사합니다.하지만 전달하고자하는 함수는 _within_''입니다. _this.handleChildFunc() _...가 없습니다. – kraftwer1

+0

'Parent'구성 요소에'handleChildFunc'을 정의한 다음 예제와 같이 'MyChild' 구성 요소에 prop로 전달하십시오. 당신이 그 개념을 오해 한 것처럼 보입니다. :) – dschu

+0

내 문제를 더 잘 설명하기 위해 코드 조각을 업데이트했습니다. 'Container' (당신이 제공 한 예제)에서 ''구성 요소 (= ')의 소품을 추가하려고하지는 않습니다. – kraftwer1

관련 문제