React.jsのレンダリングを効率化する方法としてPureComponent
がありますが、PureComponent
へrender
の際に使うコールバック関数を渡すとしたら、正常に動かすのが難しいのではないかと考えています。
例えば「あるエレメント群のclassName
を生成する関数」をPureComponent
が受け取れるようになっていた場合、関数が純粋ならそれで問題ないのですが、関数があるオブジェクトにbind
されたメソッドで、そのオブジェクトの状態に応じて返り値が変化するようになっていると、関数自身は変化しないのでPureComponent
の再render
は不要と判断されるものの、実際には状態変化しているので再描画しないと整合しない、ということが考えられます。
ひとまず正常動作させるために「PureComponent
化を諦める」や「オブジェクトの状態変化に合わせて関数自体を.bind
するなどで強制的に状態変化させる」というような方法を思いつきましたが、もっとエレガントな対応法はないでしょうか。
(ParentComponent
内で生成された複数の値をmap
してChildComponent
を生成していて、「ChildComponent
で使う、それぞれの値に応じたclassName
を生成する関数」をParentComponent
の外側から渡してChildComponent
まで引き回している、という状況です。汎用性を高めるためにこのような構造をとっています)
環境
- React 16.6
- 対象ブラウザ: IE11、各種モダンブラウザ
- Redux、SSRなどは未使用
回答2件
あなたの回答
tips
プレビュー