0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Recoil公式ドキュメント 翻訳⑰ APIリファレンス-Core-State-useSetRecoilState()

Last updated at Posted at 2020-10-30

Recoilの公式ドキュメントをgoogle翻訳するとコードまで翻訳されてしまうのが面倒なのでQiitaにまとめてみます。

追々追加していきます。(多分)

公式ドキュメント

目次

全目次は一番下にあります


useSetRecoilState(state)

​書き込み可能なRecoil stateの値を更新するセッター関数を返します。


function useSetRecoilState<T>(state: RecoilState<T>): SetterOrUpdater<T>;

type SetterOrUpdater<T> = (T | (T => T)) => void;
  • state: 書き込み可能なRecoil state(atomまたは書き込み可能なselector)

​非同期に使用してstateを変更できるセッター関数を返します。​セッターには新しい値が渡されるか、前の値を引数として受け取るアップデーター関数が渡されます。


​これは、コンポーネントが読み取りを行わずにstateに書き込む場合に推奨されるhookです。
​コンポーネントがuseRecoilState() hookを使用してセッターを取得した場合、コンポーネントは更新を登録し、atomまたはselectorが更新されたときに再レンダリングを行います。​
useSetRecoilState()を使用すると、コンポーネントを登録せずに値を設定し、値が変更されたときに再レンダリングできます。

サンプルコード

import {atom, useSetRecoilState} from 'recoil';

const namesState = atom({
  key: 'namesState',
  default: ['Ella', 'Chris', 'Paul'],
});

function FormContent({setNamesState}) {
  const [name, setName] = useState('');

  return (
    <>
      <input type="text" value={name} onChange={(e) => setName(e.target.value)} />
      <button onClick={() => setNamesState(names => [...names, name])}>Add Name</button>
    </>
)}

// このコンポーネントはマウント時に1回レンダリングされます
function Form() {
  const setNamesState = useSetRecoilState(namesState);

  return <FormContent setNamesState={setNamesState} />;
}

参考サイト

公式ドキュメント
みらい翻訳


全目次

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?