以下の内容はhttps://uga-box.hatenablog.com/entry/2022/07/22/000000より取得しました。


【Recoil】Recoilとは

いま注目されている状態管理ライブラリのRecoilについて調べた

recoiljs.org

RecoilはMetaが開発中のglobal状態管理ライブラリ

Reduxのシングルステートストアの欠点を克服し、複数のデータストアを持てるのが特徴

基本的な使い方はドキュメントにあるように、Atomというステートオブジェクトを使用する

Atom

時間的なローカルステート管理ができる

一意となる文字列型のグローバルステートを宣言する

const textState = atom({
  key: 'textState', // unique ID (with respect to other atoms/selectors)
  default: '', // default value (aka initial value)
});

それをReactのuseStateと同じように呼び出すことができる

const [text, setText] = useRecoilState(textState);

もしもatomで宣言したstateと利用するReactコンポーネントが同じファイルにある場合は空間的にローカルになるが、そのReactコンポーネントがアンマウントされてもグローバルに生き続けるという特徴を持つ

Selector

ステートを加工して使いたい場合はselectorを利用する

const charCountState = selector({
  key: 'charCountState', // unique ID (with respect to other atoms/selectors)
  get: ({get}) => {
    const text = get(textState);

    return text.length;
  },
});

これで入力した文字列の桁数を返却する関数ができたので、useRecoilValue()を使って出力する

function CharacterCount() {
  const count = useRecoilValue(charCountState);

  return <>Character Count: {count}</>;
}

まだ、Experimentalな状態なので悩ましいが使ってみたい   https://github.com/facebookexperimental/Recoil

他参考

スコープとライフタイムで考えるReact State再考

「3種類」で管理するReactのState戦略

Facebook製の新しいステート管理ライブラリ「Recoil」を最速で理解する - uhyo/blog

Recoilで快適フロントエンド開発 | 株式会社ヌーラボ(Nulab inc.)




以上の内容はhttps://uga-box.hatenablog.com/entry/2022/07/22/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14