首先指出一点,Redux的reducer是浅复制。冲掉的原因,是因为浅复制没有放在更新数据前,把...state放在前面就好了。
Redux作者DanAbramov推荐用Object.assign()and...spread浅复制来在reducer中更新状态:
所以浅复制实现方法:
原生方式:
var newObj=Object.assign({},someobj);
或者
var newObj={...someobj};
jQuery方式:
var copiedObject=jQuery.extend({},originalObject)
再说下与本问题无关的深复制:
原生方式:
var newObj=JSON.parse(JSON.stringify(someobj));
jQuery方式:
var copiedObject=jQuery.extend(true,{},originalObject)
react中reducer的写法如下:
export const actionType = {
setBetInfo: 'setBetInfo',
setBetCount: 'setBetCount',
};
const reducer = {
[actionType.setBetInfo]: (state, { payload }) => {
return { ...state, betInfo: payload };
},
[actionType.setBetCount]: (state, { payload }) => {
return { ...state, betCount: payload };
},
};