create-react-signalsを作った経緯
以前の記事
で、
jotai-signalは、jotaiとjotai-uncontrolledの中間解のような位置付けになってしまったので、逆にあまり利用シーンが思い浮かばなくなりました。jsx-transformでできることの可能性を確認するという点では価値がありますし、useMemoを必要としないため、通常のjotaiライブラリよりは書き心地は良くなりそうです。
と書きましたが、その後、jotai-signalの方を拡張して直接コンポーネントに表示できないような配列やオブジェクト、さらには、array.map()等にも対応するようにしました。
ふと、valtio-signalも同じように作ったら、面白いのではないかと思って、作ったところ、「zustand-signalはないの?」と言われたので、せっかくなので作ってみようと作りました。作ってみると、signal化する共通コードがコピペになっていたので、これはライブラリ化した方がいいだろうということで、誕生したのが、
です。共通化することで役割が見えてきました。
さらに、ふとしたことから、部分的に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をリリースしました。
これに合わせて、3つのライブラリもリリース。
結果、前回書いたのとは逆の結論になり、jotai-signalでuncontrolledができるようになったので、jotai-uncontrolledの利用シーンが思い浮かばなくなりました。uncontrolled.*
という形で機能を拡張できるのは面白いので、今後何か別の用途で同じテクニックが使えるかもしれません。
create-react-signalsの中身については、ブログ記事にしなければと思いつつ、まだ手がついていません。そのうち。
Discussion