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

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