Redux解決了什么問題?是如何工作的?
React框架這樣的純視圖的框架對組件通信、狀態共享等方面沒有太好的解決方案,只能利用狀態提升、context之類的技術方案來解決, 但是當組件結構、數據流向都比較復雜的時候,React本身的Api解決這樣的問題就有些吃力。
此時就可以使用Flux、Redux這樣的架構方式來解決問題。
我們之前的項目就在使用Redux,后來又有了rtk,讓redux在react組件中的使用更加方便,在一些小型的項目, 或者一些小模塊中, 利用useReducerHook來進行state與dispatch的構建,也能快速優雅的解決問題。
之前的原生Redux中,真實項目開發中,往往需要搭配redux-thunk來進行異步action處理,以及react-redux來進行組件與store的連接, 如果不使用react-redux的話,會比較繁瑣。
redux的結構分為store、Views、Actions、Reducer。
Store中存儲的狀態在視圖中可以通過getState來獲取,也可以通過subscribe方法進行監聽,當視圖產生UI操作的時候, 可以調用actions的方法來生成action后,利用dispatch方法進行派發,此時reducer就會被調用,并且接收到當前的狀態與action對象, 經過計算出,返回新狀態,Store就會進行狀態的更新。
利用react-redux后, 組件可以通過connect搭配mapStateToProps及mapDispatchToProps參數來獲取store中的狀態及actions中的方法。
使用RTK之后,創建reducer更近方便,利用useSelector和useDispatch可以更快更高效取用狀態及派發action。
對于一個小的場景,比如之前我做的注冊模塊有三個步驟,每個步驟都需要用到第一步用戶填寫的手機號等信息,這樣就形成了幾個小組件間的狀態共享, 如果使用父組件狀態提升會導致數據流向不清晰,也犯不上使用redux-store進行存儲,于是就是使用useReducer快速的創建了一個小的store,內部集成了state與dispatch,搭配Context,也能很高效的解決問題。

相關推薦HOT
更多>>
unity圖集合并成圖片
Unity圖集合并成圖片是一種將多個小圖片合并成一個大圖片的技術。這種技術在游戲開發中非常常見,可以有效地減少內存占用和提高渲染效率。我們...詳情>>
2023-08-28 18:07:44
unity向量旋轉得另一向量
Unity中的向量旋轉是一項常見的操作,可以通過使用旋轉矩陣或四元數來實現。以下是關于如何在Unity中旋轉一個向量得到另一個向量的詳細解釋。在...詳情>>
2023-08-28 18:07:42
unity哪個版本免費
Unity是一款強大的游戲開發引擎,提供了許多功能和工具,可以幫助開發者輕松創建高質量的游戲。關于Unity的版本免費問題,我將為你詳細解答。Un...詳情>>
2023-08-28 18:07:42
unity對象池怎么寫
Unity對象池是一種常用的優化技術,用于管理和重復利用游戲中的對象,以減少內存分配和銷毀的開銷。在Unity中,可以通過編寫一些代碼來實現對象...詳情>>
2023-08-28 18:07:41