2017-09-13 9 views
0

深いネストされた場合、どうすれば親コンポーネントnotifychildrenコンポーネントdispatches子供が発送したときに親に通知する方法?

class ParentComponent extends Component { 
    render() { 
     return (
      <div> 
       {this.props.children} 
      </div> 
     ); 
    } 
} 

子供はどんな深さでも構いません。

<Component1> 
    <Component2> 
     <ComponentThatWillDispatch /> 
    </Component2> 
</Component1> 
+2

「ディスパッチ」とはどういう意味ですか?すべての子がレンダリングされた後、親の 'componentDidMount'メソッドが呼び出されます。個々のコンポーネントは 'componentDidMount'を実装して親メソッドを呼び出すこともできます。しかし、これを使って何かの状態を変えたいと思っているのなら、あなたには恥ずべきことです。 –

+0

ディスパッチをブロードキャストしたい場合は、ある種の関数(例えばdidDispatch)を親から各子に渡す必要があり、各子がこれを呼び出す必要があります。 – Mikkel

+0

@RyanWheale:ディスパッチでは、子コンポーネントがライフサイクルメソッドを呼び出し、reduxストアでアクションを実行することを意味します。例: 'this.store.dispatch({type:...})' 私はレンダリングについて話していません。 – DKo

答えて

0

子から親に通知を受けるには二つの方法、

  1. ComponentWillReceiveProps、

、親から子へのアクションを渡すがあります。 コンポーネントWi llReceiveProps

それは戻って、以前の小道具や新しい小道具、あなたの行動があなたの子コンポーネントからトリガされるように、そのコンポーネントは、パラメータ

としてアクションを渡す

を通知されますので、それになりますあなたの親componwentは機能が

class ParentComponent extends Component { 
    constructor() { 
     this.myAction= this.myAction.bind(this); 
    } 
    render() { 
     return (
      <div> 
      <Component1> 
       <Component2 > 
        <ComponentThatWillDispatch myaction={this.myAction}/> 
       </Component2> 
      </Component1> 
      </div> 
     ); 
    } 
    myAction(){ 
     alert("Called ") 
    } 
} 

あなたの時間をトリガされている知っているので、親から派遣されますあなたのコンポーネントをインポートするには

+0

すべての小道具の 'componentWillReceiveProps'は、その子プロップだけでなく、 – DKo

関連する問題