Recoil
Recoil
https://recoiljs.org/docs/introduction/motivation
https://recoiljs.org/docs/introduction/core-concepts
reduxとどう違うか?
stateに対してフィルタして別のstateを作るのが楽(derrived state)
https://recoiljs.org/docs/basic-tutorial/selectors
https://recoiljs.org/docs/introduction/core-concepts#selectors
data-flow-graphってこういうことか
https://recoiljs.org/docs/guides/asynchronous-data-queries#data-flow-graph
asyncの扱いが楽
https://recoiljs.org/docs/guides/asynchronous-data-queries
/study-react/Recoil が面白いので Redux との違いを説明してみる
Recoil における状態の更新: Atom を更新する → Selector が更新される
Redux における依存関係の更新: あくまで状態管理のみ。取得はスコープ外
Recoilで快適フロントエンド開発 | 株式会社ヌーラボ(Nulab inc.)
atomFamilyのところはあとで嵌りそう
redux dev toolのようなものがあるか?
officialにGUIはない
officialではないが
https://chrome.google.com/webstore/detail/recoil-dev-tools/dhjcdlmklldodggmleehadpjephfgflc
https://recoiljs.org/docs/guides/dev-tools
FAQ
atomとselectorの使い分け
arrayをatomにセットして、updateや要素のdeleteがしたい
話題の「Recoil」を使ってTodoアプリ作ってみた with TypeScript - Qiita
しかし、ステートはread onlyで再代入不可なので、sliceを使って新たな配列を作り、そこに新しいオブジェクトを挿入する感じにしています。
Atoms | Recoil
replaceやremoveでも、sliceを使ってやっている
この辺のロジックをいい感じにrecoil側に移動してテストしやすくしたいんだけど
game loopとかで発生するイベントをrecoilに入れたいとき
https://github.com/facebookexperimental/Recoil/issues/289#issuecomment-650421171
eventをlistenして、setStateを呼ぶ
useRecoilCallback
https://recoiljs.org/docs/api-reference/core/useRecoilCallback/
Asynchronously read Recoil state without subscribing a React component to re-render if the atom or selector is updated.
d3.jsのintervalでグラフをアニメーションするようなときに、tickのタイミングでatomを読みたいが、react componentのre-renderはしたくない。というようなときに便利。re-renderをせずにatomにアクセスできる