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