每年培训输出1000+合格IT工程师
培训影响全国各大知名IT企业和部门

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
      }
})
赞(1) 打赏
未经允许不得转载:徐礼文的技术博客 » redux 更新了state后,组件没有更新,没有重新渲染的问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏