Redux - 基本: store, dispatch & selector
前一篇已經介紹了 action、reducer 了,這一篇繼續介紹 store 、 dispatch 以及 selector。
store
store 是儲存 reducer 的資料儲存庫,之前建立的 reducer 都會存放在這裡。
要創建一個 store ,可以使用 redux 提供的 createStore
:
1 | const store = createStore(rootreducer); |
現在 redux 會建議使用 redux toolkit 的 configureStore 替代 createStore,configureStore 基本上是 createStore 的加強版。
store 提供幾種方法可以使用:getState()
、subscribe()
以及 dispatch()
。
getState()
可以取得 state 的值。subscribe()
可以傳入一個 callback function 監聽 state 的改變,並作相對應的處理,subscribe()
會回傳一個 unsubscribe 的 function 在監聽完成後取消監聽。dispatch()
則可以 dispatch action 進入 store。
1 | import store from './store'; |
不過,我們現在基本上不用這個方法來取用 store 中的 state,而是使用 react-redux 提供的 hooks,useSelector
以及 useDispatch
。
Provider
要使用 useSelector 之前,需要先用 Provider 將要取用 store 的 components 包裹住,相當於 react 中 context 的 Provider。
1 | <Provider store={store}> |
useSelector
useSelector
是 react redux 提供的 hook ,可以輕易地取得 store 中的 state。
要使用 useSelector ,需要傳入一個 callback function,用以取得 state:
1 | const todolist = useSelector(state => state.todolist); |
與 store.getState() 不同,useSelector 是一個 hook ,因此當 state 改變時,可以觸發 re-render。
useDispatch
useDispatch
是用來 dispatch action 的方法,使用方法很簡單,只要使用 useDispatch,來取出 dispatch ,放入 action 即可。
1 | const dispatch = useDispatch(); |
- 標題: Redux - 基本: store, dispatch & selector
- 作者: 時雨 Justin
- 撰寫于 : 2023-03-05 01:33:02
- 更新于 : 2023-03-05 01:33:02
- 連結: https://www.frontendnote.site/frontend/Redux-basic-store-dispatch-selector/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。