私は反応する/還元するのが新しいです。私は(Map/Set ...のようなimmutablejsオブジェクトを格納する)reduxストアのコンテナパターンを使用しています。私はreduxコンテナに不変のシーケンスアルゴリズムを行う必要がありますか?
私が知っているように、Reactコンポーネントには、propsのシャドウ比較のためのshouldComponentUpdateというメソッドがあります。不変はこの計算に多く役立ちます。だから私の質問は、私は以下のようにreduxコンテナのシーケンスアルゴリズムを行う必要がありますか?
export default connect(
(state) => ({
data: state.getIn(['data', 'map'])
.filter((obj, key) => state.getIn(['user', 'selectedDataSet']).has(key))
.toSet(),
}),
)(MyComponent);
または、このロジックをcomponentWillReceiveProps()に入れる方が良いですか?
私が以前に試したように、map/filterのような関数が同じオブジェクトを使用する代わりに新しいオブジェクトを生成することがわかりました。下記を参照してください。 '' 'const list = Immutable.List([1,2,3]);' ''これをチェックすると、以下のようにtrueの代わりにfalseが表示されます。 '' 'list.map(data => data * 2)=== list.map(data => data * 2)' 'これは、shouldComponentUpdateが更新決定を下すようにします。 –
これはまさしくImmutableをとても素晴らしいものにしています!オブジェクト内で変更されたデータは全く新しいオブジェクトを作成します。このように、オブジェクトの深いレベルで変更が発生した場合でも、単純な比較( '===')を使用して、コンポーネントを更新する必要があるかどうかを確認できます。私の投稿に簡単なアップデートを加えてみましょう。 –
私は、shouldComponentUpdateで自由な影を比較するために、コンテナから不変の保持リストをコンポーネントに渡すことを考えます。 –