現在reselect
、セレクターを作成してストアからデータを抽出し、それをprops
viaに渡していconnect
ます。簡単にするために、私のセレクターの結果は常に JS オブジェクト (toJS()
セレクターの最後で呼び出す) であり、次のようになります。
const selector = state => state.get('data').toJS();
今、私はいくつかのパフォーマンスを改善しようとしていますshouldComponentUpdate
が、セレクターから戻る方法のために、浅い比較では不変性の利点が失われることに気付きました。
一方、.get('prop')
私のhtml内で使用するのは非常に面倒です:
<div>{this.props.data.get('prop')}</div>
特に、単純な JS オブジェクトを変更可能な子コンポーネントに渡す場合は、次のようになります。
<ChildComponent totalItems={10} />
また、小道具にアクセスするときに一貫性がありません (一部は変更可能で、一部は不変です)。
unwrap
次のようなヘルパー関数を作成することを考えました。
const unwrap = obj => obj && obj.toJS ? obj.toJS() : obj;
しかし、私はこの解決策があまり好きではありません..私はこれらのアプローチのどれも本当に好きではありません.
クリーンなコードとパフォーマンスの両方のために何を使用していますか?