✅2023/8/18 atomFormにgetとgetFieldを取れるように修正
https://github.com/mrsekut/jotai-decode-form/pull/8
以下の問題を同時に解決できるinterfaceにした
従来どおりatomWithSchemaを取れるが、内部で動的に変更できるようにしたい
通常のatomのように、
code:ts
atom(get => {
// この部分
})
↑のこの部分でゴニョゴニョするためには、getのようなものが必要
これがあると動的なformを作れる
例えば、ページ上部のセレクトボックスの選択によって、後続のfieldを変更するなど
通常のatomも指定できるようにしたい
内外で同じデータ構造のfieldを作る時にどうすべきか迷った
2つの案があった
従来どおりatomWithSchemaで定義しつつ、内外の型を同じのものを指定できるようにする
通常のatomでfieldを定義し、それをatomFormに渡せるようにする
atomWithSchemaで定義すると、exValueやstateが生えたりして冗長になる
そもそも、atomWithSchemaは内外の型が異なるためにあるAPIなので責務ずれる
formの入れ子もしたい
WIPだが、将来的に必要になりそう
以下のようなinterfaceに変えた
code:ts
const formAtom = atomForm(({ get, getField }) => ({
field1: get(field1Atom),
field2: getField(field2Atom),
}));
getで通常のatom、getFieldでatomWithSchmeaを取れる
先にgetFeildを変更し、後にgetを追加したが修正箇所が最小限で済んだ
https://github.com/mrsekut/jotai-decode-form/pull/8/commits/2865dc3e29ecce167de0ac8ecd9eebe888c33d4d
返り値や他の挙動は同じ
将来的にはここにgetFormのようなものを追加すれば良い