react-native中解決listView不能局部刷新問(wèn)題

剛在用一個(gè)listView寫的九宮格,效果要求是點(diǎn)擊每個(gè)item發(fā)生改變,我發(fā)現(xiàn)數(shù)據(jù)源變了但是狀態(tài)沒(méi)變,
最開(kāi)始我是使用一個(gè)臨時(shí)數(shù)組保存數(shù)據(jù)源,在點(diǎn)擊每個(gè)item的時(shí)候改變數(shù)據(jù)源的熟悉,這樣就做到了數(shù)據(jù)源發(fā)生變化了
這是點(diǎn)擊每個(gè)item的方法 改變數(shù)據(jù)源

event(rowData, rowId) {
       array = this.state.tempDataSource; //這是淺拷貝
        array[rowId].isSelect=!array[rowId].isSelect;
        this.setState({
            dataSource: this.state.dataSource.cloneWithRows(array),
            tempDataSource: array
        });

    }

但是這樣做不可以,后來(lái)找原因發(fā)現(xiàn)是數(shù)據(jù)源淺拷貝的原因,每次走rowHasChanged這個(gè)方法的時(shí)候發(fā)現(xiàn)數(shù)據(jù)一樣,所以沒(méi)有改變,把數(shù)據(jù)源深拷貝就可以了,不過(guò)這樣做是對(duì)內(nèi)存是有問(wèn)題的,數(shù)據(jù)量小的話還不影響。
我使用了這就代碼 深拷貝

array = JSON.parse(JSON.stringify(this.state.tempDataSource));

其實(shí)更好的做法還是使用mobx這個(gè)庫(kù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • 一、上節(jié)回顧: (一)、三大表單控件中需要記憶的核心方法: 1、RadioButton: RadioGroup類中...
    白話徐文濤閱讀 2,250評(píng)論 1 7
  • 今晚夜空特別明亮 是廣闊無(wú)邊的草原嗎 深藍(lán)的天幕 似草原上清澈的湖水 一片片潔白的小云 像草原人的蒙古包 像連綿起...
    火星鵬閱讀 545評(píng)論 1 1
  • 突然聽(tīng)到這個(gè)消息,門衛(wèi)老張走了。啊為什么?應(yīng)該是退休了吧。怪不得幾天沒(méi)見(jiàn)到,怎么那么不舍得??!同事也連聲附和是啊。...
    淺淺一笑_00aa閱讀 225評(píng)論 0 0
  • 時(shí)隔快半年,我去剪頭,預(yù)約的還是那個(gè)理發(fā)師。 那是一個(gè)很漂亮的小姐姐,不是標(biāo)準(zhǔn)日本人的長(zhǎng)相,棕色長(zhǎng)卷發(fā),每次見(jiàn)她,...
    兔子尾巴鼠閱讀 491評(píng)論 0 0

友情鏈接更多精彩內(nèi)容