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-useRecoilState()

Last updated at Posted at 2020-10-30

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

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

公式ドキュメント

目次

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


useRecoilState(state)

最初の要素がstateの値であり、2番目の要素が呼び出されたときに指定されたstateの値を更新するセッター関数であるタプル(組)を返します。

​このhookは、指定されたstateにコンポーネントを暗黙的に登録します。


function useRecoilState<T>(state: RecoilState<T>): [T, SetterOrUpdater<T>];

type SetterOrUpdater<T> = (T | (T => T)) => void;
  • state: atomまたは書き込み可能なselector。​書き込み可能なselectorは、定義にgetsetの両方が含まれるselectorで、読み取り専用のselectorはgetのみが含まれます。

​このAPIはReactのuseState()hookに似ていますが、引数としてデフォルト値の代わりにRecoil stateを取る点が異なります。​この関数は、stateの現在の値とセッター関数のタプルを返します。​セッター関数は、引数として新しい値を取るか、前の値をパラメーターとして受け取るアップデーター関数を取ることができます。


これは、コンポーネントがstateを読み書きしようとするときに使用することを推奨するhookです。

​Reactコンポーネントでこのhookを使用すると、stateが更新されたときに再レンダリングするようにコンポーネントが登録されます。​このhookは、stateにエラーがあるか、非同期解決が保留中の場合にスローされます。​このガイドをご覧ください。

サンプルコード

import {atom, selector, useRecoilState} from 'recoil';

const tempFahrenheit = atom({
  key: 'tempFahrenheit',
  default: 32,
});

const tempCelcius = selector({
  key: 'tempCelcius',
  get: ({get}) => ((get(tempFahrenheit) - 32) * 5) / 9,
  set: ({set}, newValue) => set(tempFahrenheit, (newValue * 9) / 5 + 32),
});

function TempCelcius() {
  const [tempF, setTempF] = useRecoilState(tempFahrenheit);
  const [tempC, setTempC] = useRecoilState(tempCelcius);

  const addTenCelcius = () => setTempC(tempC + 10);
  const addTenFahrenheit = () => setTempF(tempF + 10);

  return (
    <div>
      Temp (Celcius): {tempC}
      <br />
      Temp (Fahrenheit): {tempF}
      <br />
      <button onClick={addTenCelcius}>Add 10 Celcius</button>
      <br />
      <button onClick={addTenFahrenheit}>Add 10 Fahrenheit</button>
    </div>
  );
}

参考サイト

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


全目次

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?