今天遇到這么一個問題砸捏,組件調用action中方法更新state谬运,reducer也執(zhí)行了但是組件內容并沒有更新,原因是在dispatch之前修改狀態(tài)的時候垦藏,直接修改了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
}
})
這樣就能正常更新內容了~