dva: {immer: true}
1. 作用
开启 dva 内置的 immer,简化 reducer 里的 immutable 写法,不用手动浅拷贝 / 深拷贝 state。
不开启 immer(默认 false)
state 不可直接修改,必须返回新对象:
export default {
namespace: 'user',
state: { list: [], info: {} },
reducers: {
add(state, { payload }) {
// 必须拷贝,不能 state.list.push
return {
...state,
list: [...state.list, payload]
};
}
}
};
开启 immer: true 后
可以直接 mutate 操作 state,immer 内部生成不可变副本:
reducers: {
add(state, { payload }) {
state.list.push(payload); // 直接修改,语法更简单
}
}
不用写 return,dva+immer 自动处理 immutable。
2. 配置位置(umijs /dva)
umi 项目 .umirc.ts/config/config.ts
export default {
dva: {
immer: true, // 开启immer
},
};
原生 dva 初始化
import { createBrowserHistory as createHistory } from 'history';
import { create } from 'dva-core';
const app = create({ history: createHistory(), immer: true });




