Reducer 必須是純函數(shù),即給定相同的輸入,它們始終產(chǎn)生相同的輸出,并且不會修改傳入的參數(shù)。這意味著 Reducer 在處理狀態(tài)更新時應該遵循以下規(guī)則:
1.Reducer 應該基于先前的狀態(tài)和 Action,生成一個新的狀態(tài)對象,而不是修改原始的先前狀態(tài)。
2.Reducer 不應該有任何副作用,例如調(diào)用 API、改變?nèi)譅顟B(tài)等。它們只負責根據(jù) Action 更新狀態(tài)。
3.如果 Reducer 不識別傳入的 Action 類型,它應該返回先前的狀態(tài),而不是進行任何更改。
使用多個 Reducer 組合來管理不同的狀態(tài)片段是常見的做法。這種組合方式可以使用 Redux 的 combineReducers 函數(shù)來實現(xiàn)。combineReducers 接收一個對象,其中鍵是不同狀態(tài)片段的名稱,值是對應的 Reducer 函數(shù)。它將這些 Reducer 函數(shù)組合成一個根 Reducer,用于處理整個應用的狀態(tài)更新。
通過編寫 Reducer 函數(shù),Redux 提供了一種可預測和可控的狀態(tài)管理機制,它使得應用的狀態(tài)變化變得可追溯和可維護。