プレイグラウンド

入力を変えて、restate の反応を見てみましょう。

7 つの実験が本物のパッケージで動いています。左のコントローラーはこのサイトのもので、右のサンプルは props を受け取るだけです。だからそのコードは、あなたが書くコードそのままです。

コントローラー — サイト専用props — 橋渡しサンプル — コピーするコード
01

2 つの画面で 1 つのストア

複数のコンポーネントが同じ値を必要としています。一度宣言すれば、どこからでも読めます。

注目するところ
  • ステップのボタンを押してください。すべての読み手が同時に新しい数値を表示します。
  • 読み手の数を変えてください。新しい読み手は現在の値から始まります。

サンプルを準備中…

はじめる
02

変わったところだけレンダリング

大きなストアが、変更のたびにすべてのコンポーネントを再レンダリングしてはいけません。

注目するところ
  • メッセージを編集: レンダリングされるのはストア全体のカードだけ。
  • 商品を追加: 商品と概要がレンダリングされ、クーポンのカードはそのまま。
  • shallow をオフにする: selectorが毎回新しいオブジェクトを返すので、概要は変更のたびにレンダリングされます。

サンプルを準備中…

必要な部分だけを購読する
03

変更は多くても、通知は 1 回

2 つのストアを 1 つずつ更新すると、購読者が途中の中途半端な状態を見てしまいます。

注目するところ
  • 別々にクリア: 購読者には、商品 0 件と古いクーポンが同時に見えます。
  • batch でクリア: 両方のストアが変わった後に、購読者が 1 回だけ実行されます。

サンプルを準備中…

必要な部分だけを購読する
04

保存は自分のタイミングで

編集で変わるのはメモリだけ。保存は明示的な操作で、ステータスが今何が起きているかを示します。

注目するところ
  • 入力する: dirty がオンになり、まだ何も書き込まれません。
  • 遅延を大きくして保存する: 書き込み中は operation が save を示します。
  • もう一度再生する: 保存した下書きが IndexedDB から復元されます。

サンプルを準備中…

保存は自分のタイミングで
05

速く打っても、書き込みは 1 回

キーを押すたびに保存すると、ストレージがあふれます。autoSave は入力が止まるのを待ちます。

注目するところ
  • 文章を入力する: 編集回数はどんどん増え、書き込みは入力が止まるたびに 1 つ増えるだけ。
  • 「変更ごと」を選ぶ: 編集のたびに書き込みますが、保存済みの値に戻す編集では何も書き込みません。

サンプルを準備中…

保存は自分のタイミングで
06

障害ラボ

ストレージを遅く、失敗させ、使えなくしてみてください。restate がデータを守り、問題を報告する様子が見られます。

注目するところ
  • 遅延を大きくして 3 回保存する: リクエストは 1 回の書き込みを共有するので、pending は 1 のままで、3 つの結果が同時に返ってきます。
  • 書き込み失敗をオンにして保存する: dirty は true のまま、error に原因が表示されます。
  • ストレージを使えなくする: 保存は STORAGE_UNAVAILABLE で拒否されますが、編集はそのまま続けられます。

サンプルを準備中…

信頼性の設計
07

ドキュメントごとの状態

開いているドキュメントにはそれぞれ専用の状態が必要で、ドキュメントを閉じたら解放されるべきです。

注目するところ
  • ドキュメント A に入力してから B に入力する: それぞれが自分のテキストを保ちます。
  • ドキュメント A を閉じてもう一度開く: スコープが破棄されたので、空の状態から始まります。

サンプルを準備中…

コンポーネントが所有する状態

ドキュメントを検索

すべてのガイドのタイトル、説明、本文から検索します。