美文网首页
redux 更新了state后,组件没有更新,没有重新渲染的问题

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

作者: 咸鱼菠菜 | 来源:发表于2017-10-31 15:29 被阅读0次

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

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

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/qoybpxtx.html