待望のjotai-effectというライブラリーがリリースされました、Recoilの機能と似ている部分もあるはず
RecoilがAtom Effectsという機能を提供した際、Jotaiでも似たような機能を作れないかと議論になったことがあります。もうかれこれ何年も前の話。その際に、Jotaiに.onMount
の仕組みが追加されました。ただ、.onUpdate
の採用は見送りました。ほとんどのケースで不要なのと、useEffectでしばしば散見される間違った使われ方をする可能性が高かったためです。結果的にはその方針は合っていたように思います。
今回、一人のコントリビューターがRecoilに類似したeffectの仕組みを提供したいと申し出たのをきっかけに検討し、別パッケージで提供するのは可能だと判断しました。これまで、いくつかuseEffectに頼らなければならないケースがあり、それ自体は正しいものの、心情的にはatomに閉じたモデリングをしたいと思いましたし、その要望も何度か上がっていました。試行錯誤の上、結果的に atomEffect
というユーティリティ関数を jotai-effect
というパッケージから提供するところまで辿り着きました。ひとつ面白かったのは、atomEffectの実装はだいぶシンプルにできたのですが、それがJotai v2から用意された内部APIと、ここ何ヶ月で修正リリースした改善によって実現できたことです。つまり、半年前であれば同じことはできなかったかもしれません。
Recoilからの移行にどれほど寄与するかは検証できていませんが、いくつかのケースでは助けになるのではないかと思います。もしどなたかお試しいただければ、フィードバックお願いします。
Jotai Friends のテックブログです。 React状態管理ライブラリJotai(jotai.org)を新たな選択肢に。 エンジニアの皆さんが安心してJotaiを採用できるように支援します。 Powered by twitter.com/t6adev
Discussion