日更(四十八)-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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章