参照immer文档这样写似乎不行,组件中接收到的state是空的:
reducers: {
setInfo(state, { payload }) {
return payload;
}
}
或这样也不行
reducers: {
setInfo(state, { payload }) {
state = payload;
}
}
难道只能state.xxx=payload.xxx这样用吗
dva-immer 用 0.2.0,兼容老的 reducer 返回方式的。
你是用 umi-plugin-dva + immer 的方式?
是的,刚更新了umi-plugin-dva和umi到最新版本,但问题还存在
更新到 [email protected] 试试。
@sorrycc thx.可以了
目测dva-immer不兼容老的 reducer 返回方式了,要改得一起改。。。
@superlbr 兼容的,我们有项目在用。
"umi-plugin-dva": "^0.9.1", 报错如下:
Uncaught Error: An immer producer returned a new value and modified its draft. Either return a new value or modify the draft
changeStockItem(state, { payload }) {
const { index, key, value } = payload
const stockList = [...state.stockList]
stockList[index][key] = value
return { ...state, stockList }
}
改成state.stockList = stockList 就ok
还有假设原state[index]['children'] = []
changeStockItem(state, { payload }) {
const { index, key, value } = payload
state[index]['children'] = [1,2,3]
}
这样也会报错,提示children属性只读
Most helpful comment
"umi-plugin-dva": "^0.9.1", 报错如下:
Uncaught Error: An immer producer returned a new value and modified its draft. Either return a new value or modify the draft
改成state.stockList = stockList 就ok