ReactNative state更新,視圖不更新的問題


開發中遇到這樣的問題,我更新了state一個數組的某個元素的選中狀態,打印出的數據也顯示修改正確了,但是界面卻沒更新。例如下圖點擊某項修改選中狀態。

代碼中之前是這樣寫的,結果界面沒有更新。

var array=this.state.list;

var items=array[index];
items.selected=!items.selected;

this.setState({
list: array
})

console.log(this.state.list)

后面查了一下資料,因為FlatList組件繼承自PureComponent而非通常的Component,這意味着如果其props淺比較中是相等的,則不會重新渲染。所以請先檢查你的renderItem函數所依賴的props數據(包括data屬性以及可能用到的父組件的state),如果是一個引用類型(Object或者數組都是引用類型),則需要先修改其引用地址(比如先復制到一個新的Object或者數組中),然后再修改其值,否則界面很可能不會刷新。(譯注:這一段不了解的朋友建議先學習下js中的基本類型和引用類型。)

 

所以,當state內存放的數據為數組時候,實質上是一個引用,就算是state內push了一個數據,這時候是不會觸發更新的。這里我是新建了一個數組解決的,修改后的代碼如下:

var list=[];
list=list.concat(this.state.list);

list[index].selected=!list[index].selected;
this.setState({
list: list
})

console.log(this.state.list)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM