🚥

create-react-signalsを作った経緯

2023/01/21に公開

以前の記事

https://zenn.dev/dai_shi/articles/01813b22907dcf

で、

jotai-signalは、jotaiとjotai-uncontrolledの中間解のような位置付けになってしまったので、逆にあまり利用シーンが思い浮かばなくなりました。jsx-transformでできることの可能性を確認するという点では価値がありますし、useMemoを必要としないため、通常のjotaiライブラリよりは書き心地は良くなりそうです。

と書きましたが、その後、jotai-signalの方を拡張して直接コンポーネントに表示できないような配列やオブジェクト、さらには、array.map()等にも対応するようにしました。

ふと、valtio-signalも同じように作ったら、面白いのではないかと思って、作ったところ、「zustand-signalはないの?」と言われたので、せっかくなので作ってみようと作りました。作ってみると、signal化する共通コードがコピペになっていたので、これはライブラリ化した方がいいだろうということで、誕生したのが、

https://github.com/dai-shi/create-react-signals

です。共通化することで役割が見えてきました。

さらに、ふとしたことから、部分的にuncontrolledにも対応できるのではないかと考え、jsx-transformの中で、callback refを使うということに挑戦しました。つまり、jotai-signalでやっていたこととjotai-uncontrolledでやっていたことを合わせた感じです。jotai-signalはjsxImportSourceの設定が必要になるのが、ひと手間ありますが、jotai-uncontrolledのuncontrolled.プレフィックスはひと手間以上の手間がかかるとも言えるので、実際は楽になりました。

色々やって、使う方は基本的に意識しなくて良いようになりました。ベストエフォートでuncontrolledになります。

create-react-signals v0.5.0からのv0.6.0をリリースしました。

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

これに合わせて、3つのライブラリもリリース。

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

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

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

結果、前回書いたのとは逆の結論になり、jotai-signalでuncontrolledができるようになったので、jotai-uncontrolledの利用シーンが思い浮かばなくなりました。uncontrolled.*という形で機能を拡張できるのは面白いので、今後何か別の用途で同じテクニックが使えるかもしれません。

create-react-signalsの中身については、ブログ記事にしなければと思いつつ、まだ手がついていません。そのうち。

Discussion