通过combineReducers添加的自定义Reducer是否使用Immer更新状态?
关于Redux Toolkit中Immer使用的确认
你的UserReducer和SettingsReducer不会自动使用Immer进行状态更新。
原因说明:
- 你当前采用的是传统手写
switch-case的reducer写法,属于Redux基础编写模式,这种写法没有集成Immer的能力。 - Redux Toolkit仅在使用
createSlice或createReducer这两个API时,才会内部自动集成Immer。这两个API会封装状态更新逻辑,允许你以“直接修改”的语法编写代码,实际由Immer底层生成不可变的新状态。
如果想让你的reducer用上Immer,推荐重构为createSlice的形式,示例如下:
import { createSlice } from '@reduxjs/toolkit'; const settingsSlice = createSlice({ name: 'settings', initialState: initialSettingsState, reducers: { updateSetting: (state, action) => { // 直接修改state即可,Immer会自动处理不可变更新 state.targetKey = action.payload; } } }); export const { updateSetting } = settingsSlice.actions; export default settingsSlice.reducer;
内容的提问来源于stack exchange,提问作者Monku
相关产品推荐
相关产品推荐

