日更(四十八)-React-Redux的state刷新问题

瞎扯

为什么今天不写flutter呢,因为今天周日我还加班了.
写了一天react.实在没精力去研究flutter.
刚好,写react碰到点问题.记录下来

为什么不会刷新?

比如:

  list.foreach(item=>{
     item.name='123'
  })
  this.props.refresh(list)
  refresh=(list)=>(dispatch)=>{
    dispatch({
        type:'refresh',
        list,
    })
}

以上代码纯手打,不是很全,大致就是这个意思了.

原因

为什么不刷新呢?

其实就是个很简单的问题.

内存地址

这个问题不管是java还是什么,都是很常见的.

因为我修改了list的数据.但是这个list还是原来的对象.

所以当我再通过redux去更新这个list的时候.

因为判断两个对象的地址为同一个.setState就会有问题.

按正常设计来说,这种情况当然不会去更新界面,重绘UI.因为你传入了重复的对象(即使list内的元素已经改变)

所以,哪怕redux的state的数据已经变了,却不会重绘界面.

解决办法也简单

创建一个新对象就行了,

  list.foreach(item=>{
     item.name='123'
  })
  const newList={
     ...list,
}

  this.props.refresh(newList)

这样,就不会出现更新了state,界面却不更新的问题了.'


交流群:493180098,这是个很少吹水,交流学习的群.
APP开发维护咨询群 : 492685472 ,承接APP迭代.开发维护.咨询业务,付费快速解决问题.

你可能感兴趣的:(日更(四十八)-React-Redux的state刷新问题)