Reactで、Array.sortしたデータが、useMemoやuseCallbackに反映されない
by codechord.0 Comments

Monsterkoi / Pixabay
Reactで処理が複雑になれば、useMemoやuseCallbackなどを使い、描画コストがかからないよう効率化していくわけでが、
ページネーションを作っていて、その際、useMemoの値が更新されない症状が発生したのでそのメモ。
Immutableであれ
結構、Reactなどで重要な、immutabuleであることがポイントで、破壊的な関数をつかってたのが原因。Immutableじゃないぞ!っていうエラーが出るわけもなく、ちょっとハマった。
immutableをわかったつもりでわかっていなかったんだと思う。
immutabuleについては、こちらの記事が、完結でわかりやすい。
https://noah.plus/blog/007/
配列/オブジェクトの正しい加工
具体的には、並び替えをする処理に、Array.sortやArray.sliceを、そのまま使って加工していた。
だめなコード例は、次のような感じ
items.sort(並び替えの関数);items.slice(start,end);
次のように、加工前に、あらたなオブジェクト(配列)を作ってしまうことで、元のオブジェクトを壊さないで済む。
[...items].sort(並び替えの関数);[...items].slice(start,end);
その他の例についても、先のページがやっぱりわかりやすいので、一読をオススメ。
実例はこちら
実際、この操作は、カスタムフックでページネーションを作っていて、この症状が発生したのだけど、
別エントリにしまとめてみたので、よかったら合わせてどうぞ。
コメントを残すコメントをキャンセル
POPULAR ENTRY
- README.mdファイル。マークダウン記法まとめ
- 一石三鳥!?SublimeText2とsass/SCSS(compass)+SFTP(FTP)で作業効率化する方法。
- 3つの簡単便利Javascriptテンプレートエンジン。Mustache.js, Handlebars.js, Microtemplating
- Sublime Text 2とCtagsの組み合わせがすごい。開発スピードUP[Mac版]
- MacのApp Storeに接続出来ない場合の対処法
- [CMS]多言語化、翻訳ファイル.po、.mo。
- WordCamp vancouver 2012へ行ってきた、まとめ
- パララックスでのイベントの考察。scroll / throttle / debounce / touchmove / mousewheel
- docker imagesに表示される<none>を消す。dangling
- CodaとZen-Codingのショートカットまとめ。極めると早い。
RECENT ENTRY
PROJECT
CATEGORY
ARCHIVE
- 2020年10月 (3)
- 2019年9月 (3)
- 2019年8月 (2)
- 2019年5月 (1)
- 2019年3月 (1)
- 2018年12月 (1)
- 2018年9月 (1)
- 2018年7月 (1)
- 2018年4月 (1)
- 2016年12月 (2)
- 2016年2月 (1)
- 2016年1月 (1)
- 2015年12月 (1)
- 2015年8月 (1)
- 2015年6月 (1)
- 2015年5月 (2)
- 2014年9月 (1)
- 2014年6月 (1)
- 2014年1月 (1)
- 2013年7月 (1)
- 2013年3月 (2)
- 2012年12月 (2)
- 2012年10月 (1)
- 2012年1月 (3)
- 2011年7月 (1)
- 2011年6月 (2)
- 2011年2月 (1)
- 2010年6月 (4)
