redux 更新了state后,组件没有更新,没有重新渲染的问题

今天遇到这么一个问题,组件调用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
      }
})

这样就能正常更新内容了~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容