線上練習場

改變輸入,看看 restate 如何回應。

七個實驗執行的都是真正的套件。左邊的控制器屬於本網站;右邊的範例只接收 props,所以它的程式碼就是你實際要寫的程式碼。

控制器 — 只屬於網站props — 連接兩者的橋範例 — 你要複製的程式碼
01

兩個畫面,一個 store

多個元件需要同一個值。宣告一次,到處都能讀取。

觀察重點
  • 按下步進按鈕:所有讀取者同時顯示新的數字。
  • 改變讀取者的數量:新的讀取者會從目前的值開始。

正在準備範例…

開始使用
02

只渲染有變化的部分

大型 store 不該在每次變化時重新渲染所有元件。

觀察重點
  • 編輯留言:只有讀取整個 store 的卡片會渲染。
  • 加入商品:商品和摘要渲染,優惠券卡片保持不動。
  • 關閉 shallow:摘要每次變化都會渲染,因為它的 selector 每次都回傳新物件。

正在準備範例…

只訂閱需要的部分
03

多次變化,一次通知

逐一更新兩個 store,會讓訂閱者看到只改了一半的狀態。

觀察重點
  • 分別清除:訂閱者會同時看到 0 件商品與舊的優惠券。
  • 用 batch 清除:兩個 store 都改變後,訂閱者只執行一次。

正在準備範例…

只訂閱需要的部分
04

何時儲存由你決定

編輯只會改變記憶體。儲存是一個明確的動作,狀態會顯示正在發生什麼事。

觀察重點
  • 輸入:dirty 會開啟,這時還沒有寫入任何東西。
  • 調高延遲後儲存:寫入進行時 operation 會顯示 save。
  • 重新播放:已儲存的草稿會從 IndexedDB 還原。

正在準備範例…

何時儲存由你決定
05

打字再快,也只寫入一次

每按一次鍵就儲存會讓儲存空間不堪負荷。autoSave 會等待輸入停頓。

觀察重點
  • 輸入一句話:編輯次數快速增加,寫入次數則在每次停頓後才加一。
  • 選擇「每次變化」:每次編輯都會寫入,但改回已儲存的值時不會寫入。

正在準備範例…

何時儲存由你決定
06

故障實驗室

讓儲存空間變慢、出錯或無法使用,看看 restate 如何保住你的資料並回報問題。

觀察重點
  • 調高延遲後儲存三次:這些請求共用同一次寫入,所以 pending 維持 1,三個結果同時回來。
  • 開啟寫入失敗後儲存:dirty 維持 true,error 會顯示原因。
  • 讓儲存空間無法使用:儲存會以 STORAGE_UNAVAILABLE 被拒絕,但編輯照常進行。

正在準備範例…

可靠性設計
07

依文件區分的狀態

每份開啟的文件都需要自己的狀態,並在文件關閉時釋放。

觀察重點
  • 先在文件 A 輸入,再到 B 輸入:兩者各自保留自己的文字。
  • 關閉文件 A 再重新開啟:它會從空白開始,因為它的 scope 已被銷毀。

正在準備範例…

元件擁有的狀態

搜尋文件

搜尋所有指南的標題、說明與內文。