2017-02-15 18 views
0

の状態変化を起こし、私は次のコードを持っている:今Reactjs - componentWillMount SETSTATEがアンマウントコンポーネント

componentWillMount() { 
    this.props.actions.A().then(result => { 
     this.setState({ a: result }); 
    }); 
} 

を何が起こっているのか、私はページが高速に切り替えた場合、私は警告を言って受け取るということです:setState(...): Can only update a mounted or mounting...

このシナリオを防ぐにはどうすればよいですか? (明らかに、IsMountedプロパティを使用するとそれを解決できますが、それは古いものとして読み取られます)

答えて

0

componentDidMountライフサイクルフックを試してみてください。だから、ここで

componentDidMount() { 
    this.props.actions.A().then(result => { 
     this.setState({ a: result }); 
    }); 
} 

だろうFBが言ったことです。部品が実装された後 「componentDidMount()がすぐに起動されたDOMノードを必要と初期化はここに行けばあなたがリモートエンドポイントからのデータをロードする必要がある場合。これはネットワーク要求をインスタンス化するのに適しています。このメソッドで状態を設定すると、再レンダリングがトリガーされます。

+0

悪い!コンポーネントを使用すると言っている文書WillMount – omriman12

+0

あなたはそれを読んだ場所へのリンクを私に送ることができますか? 'componentDidMount'は、コンポーネントの初期状態の設定やAPIからのデータの取得に使用されます。 'componentWillMount'は' componentDidMount'の前に起動し、まだマウントされていないコンポーネントに状態を設定しようとしています。そのため、そのエラーメッセージが表示されます。 –

+0

ここでもう一つのスレッドは、 'componentDidMount'に' setState'を呼び出すためのアンチパターンではない理由について話しています。 –

関連する問題