国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解決react native ListView.DataSource 改變數組項屬性視圖不刷新

wpw / 3346人閱讀

摘要:可是當我們改變已存在數組項的屬性時,會發現視圖并不會如你希望的那樣更新,類似代碼如下當我們修改并結果發現我們的視圖并沒有如期改變。我的解決辦法是,只替換被改動的數組項,并且暫時不更新,當并非同步完成后再更新,代碼如下不當之處請指正,謝謝

當我們使用react native的ListView.DataSource來提供高性能的數據處理和訪問。可是當我們改變已存在數組項的屬性時,會發現視圖并不會如你希望的那樣更新,類似代碼如下

export default class extends Component {
    dataSource = [
        {foo: "bar", active: false},
        {foo: "zoo", active: false}
    ]
    ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }))
    constructor(props) {
        this.state = {
            lists: this.ds.cloneWithRows(this.dataSource)
        }
    ......

當我們修改dataSource[0].active = true, 并setState,結果發現我們的視圖并沒有如期改變。在網上找了一圈,說粗暴的替換整個dataSource之類的,結果發現根本木有效果,r1還是老老實實的等于r2,原因的話等我看看源碼在過來寫一下。
我的解決辦法是,只替換被改動的數組項,并且暫時不更新dataSource,當setState(并非同步)完成后再更新,代碼如下:

let temp = this.dataSource.map(row => row.foo === "bar" ? Object.assign({}, row, {active: true} : row))
this.setState({lists: this.ds.cloneWithRows(temp)}, ()=>{this.dataSource = temp})

不當之處請指正,謝謝

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107135.html

相關文章

  • React Native 簡介:用 JavaScript 搭建 iOS 應用(2)

    摘要:分別命名文件為和。上述代碼指定了當某列書籍被點擊時響應一個回調函數。當組件的值改變時例如用戶鍵入一些文本,將會調用組件,同時為組件指定一個回調函數。在調用時,回調函數和利用用戶輸入的數據將設置和屬性。 【編者按】本篇文章的作者是 Joyce Echessa——渥合數位服務創辦人,畢業于臺灣大學,近年來專注于協助客戶進行 App 軟體以及網站開發。本篇文章中,作者介紹通過 React N...

    n7then 評論0 收藏0
  • React Native 基礎練習指北(二)

    摘要:承接上文基礎練習指北一,我們來看看如果通過接口獲取線上數據并展示。如果使用無法刷新效果,請檢查的權限設置。會在組件加載完成后,使用方法發送請求,并且只發送一次。牢記在最后要使用,否則不會出現錯誤提示。下一步在返回的對象中添加空的。 承接上文《React Native 基礎練習指北(一)》,我們來看看React Native如果通過接口獲取線上數據并展示。 Tips: 如果使用cm...

    shixinzhang 評論0 收藏0

發表評論

0條評論

wpw

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<