You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:10:31