🧶

待望のjotai-effectというライブラリーがリリースされました、Recoilの機能と似ている部分もあるはず

2023/10/15に公開

https://twitter.com/dai_shi/status/1712248353520750891

RecoilがAtom Effectsという機能を提供した際、Jotaiでも似たような機能を作れないかと議論になったことがあります。もうかれこれ何年も前の話。その際に、Jotaiに.onMountの仕組みが追加されました。ただ、.onUpdateの採用は見送りました。ほとんどのケースで不要なのと、useEffectでしばしば散見される間違った使われ方をする可能性が高かったためです。結果的にはその方針は合っていたように思います。

今回、一人のコントリビューターがRecoilに類似したeffectの仕組みを提供したいと申し出たのをきっかけに検討し、別パッケージで提供するのは可能だと判断しました。これまで、いくつかuseEffectに頼らなければならないケースがあり、それ自体は正しいものの、心情的にはatomに閉じたモデリングをしたいと思いましたし、その要望も何度か上がっていました。試行錯誤の上、結果的に atomEffect というユーティリティ関数を jotai-effect というパッケージから提供するところまで辿り着きました。ひとつ面白かったのは、atomEffectの実装はだいぶシンプルにできたのですが、それがJotai v2から用意された内部APIと、ここ何ヶ月で修正リリースした改善によって実現できたことです。つまり、半年前であれば同じことはできなかったかもしれません。

Recoilからの移行にどれほど寄与するかは検証できていませんが、いくつかのケースでは助けになるのではないかと思います。もしどなたかお試しいただければ、フィードバックお願いします。

https://github.com/jotaijs/jotai-effect

Jotai Friends

Discussion