今天遇到这么一个问题,组件调用action中方法更新state,reducer也执行了但是组件内容并没有更新,原因是在dispatch之前修改状态的时候,直接修改了state,如下:
let myData = getState().CompA.tmpData;
myData.test = 'newValue';
dispatch({
type: TEMP_CHANGE,
data: {
dataForPrint: myData
}
})
原因是 state是引用,直接修改state的时候store内部的state同样也就变了,redux认为dispatch前后的state没有改变,就不会render,所以如果要取这整个对象进行一些修改,可以使用Object.assign或者直接简单粗暴地拷贝一份:
let myData = JSON.parse(JSON.stringify(getState().CompA.tmpData)) ;
myData.test = 'newValue';
dispatch({
type: TEMP_CHANGE,
data: {
dataForPrint: myData
}
})
这样就能正常更新内容了~