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-実用(Utils)-waitForNone()

Last updated at Posted at 2020-11-24

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

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

公式ドキュメント

目次

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


waitForNone(dependencies)

要求された依存関係の現在のstateに対するLoadableのセットを返す並行性ヘルパー。​

依存関係は、タプル配列またはオブジェクト内の名前付き依存関係として指定できます。


function waitForNone(dependencies: Array<RecoilValue<>>):
  RecoilValueReadOnly<UnwrappedArrayOfLoadables>
function waitForNone(dependencies: {[string]: RecoilValue<>}):
  RecoilValueReadOnly<UnwrappedObjectOfLoadables>

waitForNone()waitForAll()と似ていますが、値を直接返すのではなく、すぐに戻り、各依存関係に対してLoadableを返す点が異なります。​noWait()と似ていますが、一度に複数の依存関係を要求できる点が異なります。

​このヘルパーは、部分的なデータを操作する場合や、別のデータが使用可能になったときにUIを段階的に更新する場合に便利です。

Incremental Loading の例

​次の使用例は、複数のレイヤを持つグラフを表示します。​各画層には、コストがかかる可能性のあるデータクエリーがあります。​ペンディング(保留)中の各レイヤーの編集ボックスを使用してグラフを即座にレンダリングし、そのレイヤーのデータが入力されるたびにグラフを更新して新しい各レイヤーを追加します。​クエリーでエラーが発生した画層がある場合、その画層だけにエラーメッセージが表示され、残りの画層は引き続きレンダリングされます。

function MyChart({layerQueries}: {layerQueries: Array<RecoilValue<Layer>>}) {
  const layerLoadables = useRecoilValue(waitForNone(layerQueries));

  return (
    <Chart>
      {layerLoadables.map((layerLoadable, i) => {
        switch (layerLoadable.state) {
          case 'hasValue':
            return <Layer key={i} data={layerLoadable.contents} />;
          case 'hasError':
            return <LayerErrorBadge key={i} error={layerLoadable.contents} />;
          case 'loading':
            return <LayerWithSpinner key={i} />;
        }
      })}
    </Chart>
  );
}

参考サイト

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


全目次

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?