recoilどうなってるん
tldr
なんやこの<+T>って思ったら、readonlyだった
<-T>はwriteonly
共変的と逆変的って書き込み・読み込みみたいな意味を持つの?共変性・反変性を調べたら、同じ方向に変化するか逆の方向に変化するか見たいな出てきて???ってなったけど、もしかして全く別のこと調べてた?
You can also specify the subtyping behavior of a generic via variance sigils. By default, generics behave invariantly, but you may add a + to their declaration to make them behave covariantly, or a - to their declaration to make them behave contravariantly. See our docs on variance for a more information on variance in Flow.
また、ジェネリックのサブタイプの動作をバリアンス・シグネチャーで指定することもできます。デフォルトでは、ジェネリックは不変的に動作しますが、宣言に+を追加すると共変的に動作し、-を追加すると逆変的に動作するようになります。Flowにおける分散の詳細については、docs on varianceを参照してください。
読み込み、書き込みってことは要はselectorでしょう。
atomのdefaultは読み込み専用||読み書きできる値の両方を受け取るってことかな
isRecoilValueだと、selectorを返すな
それ以外はnodeを返すな
__DEV__だとrecoilvalueのvalidationしてる
useRecoilStateはuseRecoilValueとuseSetRecoilStateの結果を返してるな
useRecoilValueはhandleLoadableの結果を返してるな
handleLoadableはloadable.stateによって処理を変える
useMemoか。
今のコンパイラじゃ無理なのか
依存する値の配列はコールバックに引数として渡されるわけではありません。しかし概念としては、この記法はコールバックの引数が何なのかを表現しています。コールバックの内部で参照されているすべての値は依存の配列内にも現れるべきです。将来的には、コンパイラが発達すればこの配列を自動で作成することも可能であるはずです。
storeRefかrecoilStateが変化した場合に処理が走る
defaultStore
Object.freezeとseal
// If ancestorStoreRef.current !== defaultStore, it means that this RecoilRoot is not nested within another.
そういう意味になるのね?てことはancestorStoreRefは一つ上の親か?
useContextで値を管理しているのがrecoilだと思った