Agile育成ブログ
未来を変える喜びを
React

Recoil


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

Recoilは、Context APIが抱えるこれらの制約・問題を解決するためにFacebookによって提唱された実験的な状態管理ライブラリです。「Atom」「Selector」と呼ばれる単位を使用してアプリケーションデータを管理し、各Atomには一意のキーとそれが管理するデータの一部が含まれています。各Selectorは複数のAtomにもとづく派生状態の一部で、Atom・他のSelectorを受け取る純粋な関数として定義します。これらの単位をHooks APIで操作しながら状態管理を行うのがRecoilです。

useState()との違い

React HooksのuseState()はコンポーネント内でのstate(状態)を管理するのに対し、Recoilはアプリケーション全体でのstateを管理します。

RecoilRoot

Atom

AtomはStateを管理するためのデータストア。
Reduxはアプリケーション全体で状態管理を行うストアが一つなのに対し、RecoilはAtom単位で一つ一つの状態管理を行う。

keyにアプリケーション全体で一意なキー、defaultに状態管理したい値の初期値を設定します。
状態管理したい値一つごとにAtomを一つ作っていく。

ここでは入力したテキストを保持するAtomを作成します。

import { atom } from 'recoil'

export const textState = atom({
  key: 'textState'  // 一意のキー
  default: ''       // 初期値
})

useRecoilState()

ateの取得・更新を行う場合、useRecoilState()を使用します。
useRecoilState()の引数には使用したいstateを渡します。
戻り値は最初の要素にstateの値、2つ目の要素にstateの値を更新するセッター関数であるタプルを返します(React HooksのuseState()と同じ)。

You cannot copy content of this page