2017-01-31 19 views
1

子コンポーネント内の項目が削除されたときに、親コンポーネントのcomponentDidMountライフサイクルで再フェッチしようとしていますか?しかし、親ルートの最初のレンダリングで呼び出された後、this.context.router.pushを使用してルートを戻すと、親ルート内でもうcomponentDidMountがトリガーされないように見えます。誰でもこれを回避するための提案がありますか?とても有難い。子コンポーネントからルーティングされたときにcomponentDidMountが呼び出される

export class Parent extends React.Component { 
    componentDidMount() { 
    this.props.fetchData(
     // update state 
    ) 
    } 
    render() { 
    // render with updated data 
    } 
} 

export class Child extends React.Component { 
    constructor (props) { 
    super(props) 
    this.deleteItem = this.deleteItem.bind(this) 
    } 
    componentDidMount() { 
    this.props.fetchData(
     // update state 
    ) 
    } 
    deleteItem() { 
    this.props.deleteItem(id, (res) => { 
     this.context.router.push('/parentroute') 
    }) 
    } 
    render() { 
    } 
} 

答えて

2

componentDidMountは一度だけ、部品が実装された後に呼び出されます。

親コンポーネントメソッドを複数回呼び出す場合は、親コンポーネントにcomponentWillReceivePropsを使用できます。

また、子供のcomponentDidMountcomponentWillUnmountフックを使用することもできますが、おそらく親でそれを処理するのが最善の方法です。

+0

ありがとうございました。 componentWillRecievePropsはそれを解決します。 – jhlosin

関連する問題