iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0

共享狀態( Recoil state )

  1. atom: 共享狀態的基本單位,需要一個key、共享狀態的預設值。
  2. selector: 導出資料的共享狀態,若我們想要依賴某個 Recoil state 算出新的 state 時,可以使用
  3. atomFamily / selectorFamily: 相同的 key 可以根據不同的參數,儲存不同的 value 。當我們需要透過外部參數來儲存某個共享狀態時用

元件內獲取(Access)共享狀態 [read / write Recoil state]

1.<RecoilRoot>元件:放在React專案元件頂層,負責儲存所有的 Recoil state

2.useRecoilState:如同useState hook,可以取得 state 、 state setter,參數帶入你想要獲取的state名稱

3.useRecoilValue:僅取得state、不能拿 state setter,一般多在拿取 selector 的 state 時使用(因為seletcor 是被其他 atom 或 selector算出來的,通常我們不需要主動set )

4.useSetRecoilState:僅取得state setter、不能拿 state,通常作為效能優化的手段(因為我們使用這個setter 時,我們被沒有拿取、使用該 state,因此 state 的改變,不會造成此元件重新渲染)

5.useRecoilStateLoadable:獲取非同步狀態時,不想使用<Suspense>,想要客製化自己的 loading跟 error時使用,如同useState hook,可以取得 LoadableState 、 state setter。(原本希望取得的state會被放入 LoadableState 這個物件裡面的content,我們透過switch LoadableState 物件裡的 state切換 3 種狀態:1.取值 , 2.讀取中, 3.錯誤狀態)

6.useRecoilValueLoadable:獲取非同步狀態時,不想使用<Suspense>,想要客製化自己的 loading跟 error時使用,僅取得 LoadableState、不能拿 state setter。(原本希望取得的state會被放入 LoadableState 這個物件裡面的content,我們透過switch LoadableState 物件裡的 state切換 3 種狀態:1.取值 , 2.讀取中, 3.錯誤狀態)


上一篇
狀態管理的救星?! Recoil 來自遠方的狀態,如何處理Async State? (2)
下一篇
Modal in React ( React 當中的互動視窗、對畫框)
系列文
關於React,那些我不知道的30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言