2017-03-22 19 views
0

この "パラドックス"のクリーンなソリューションがあれば、どんな考えですか?子供のアクセスの親コンポーネント

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

問題は<Child><Parent>をレンダリングしていることを、もちろん、です。

最終的には、<Parent>のインスタンスメソッドを<Child>から呼び出すことが目標です。例えば(ref)として

Iはすでに試みた回避策、コールバック関数(getParentReference())、cloneElement()あるいはthis._reactInternalInstanceを使用して新しい小道具としてそれを追加することによって、参照を渡すが、それらのどれも(非常にハックされてから離れて)動作するように見えません。

+0

をパラメータとして渡すことができます。 '' – Abhishek

+0

本当にやりたいのなら、子としてpropとして必要なメソッドを渡します。 – dfsq

+0

@Abhishek、@ dfsq:メソッドは_within_ '' ... – kraftwer1

答えて

0

コールバック関数を使用することを検討する必要があります。

コールバック関数

親はこのように、小道具として子供に関数を渡す:

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

を、子がそうのようにその機能を呼び出します。

this.props.myFunc(); 

そして、子供がそのpropypeで宣言されたこの関数を必要とすることを忘れないでください:

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

関連する問題