2017-08-19 12 views
5

React/Mobxアプリケーションがあります。ストアで変更を加えるときに、コンポーネントが更新(再レンダリング)されていますが、いくつかの機能を追加するためにいくつかの比較を行う必要があるため、componentWillReceiveProps(nextProps)を使用しnextPropsとthis.propsを比較します。どういうわけかそれは呼ばれていません。どんなアイデア、何が間違っているのか、それを得るために何ができるのですか?React/Mobx - コンポーネントが再レンダリングされていますが、componentWillReceiveProps()が呼び出されていません

+0

あなたのコードをここに貼り付けてください。 –

+0

これを見てください:https://github.com/mobxjs/mobx-react/issues/281 – robertklep

+2

そして、特に** urugator **の説明。 https://github.com/mobxjs/mobx-react/issues/281#issuecomment-309410018 – felixmosh

答えて

1

TL; DR:componentWillUpdatecomponentDidUpdate


渡されたオブジェクトストア小道具が決して変化しないように、でもその内容の変更を使用します。 @ observableを使用するトリックは、コンポーネント内で更新をトリガーすることで、プロップを変更することがないということです。 shouldComponentUpdate、componentWillReceiveProps、およびcomponentDidReceivePropsなどのライフサイクル機能を使用すると、コンポーネントの小道具または状態が変更されたときにトリガされるため、機能しません。 mobxのドキュメントはshouldComponentUpdateセクションでうまく説明しています。

したがって、オブザーバブルで更新をキャッチするには、ライフサイクルスタックで少し深く移動し、componentWillUpdatecomponentDidUpdateを使用する必要があります。

関連する問題