1、先碼為敬
數(shù)據(jù)結(jié)構(gòu)
speAllArr: [
{
id: '86',
classifyIIShowFlag: false,
firstData: {...}
...
},{
id: '87',
classifyIIShowFlag: false,
firstData: {...}
...
}
]
setData的解決方案
// 添加數(shù)據(jù)
this.setData({
['speAllArr[' + speAllArr.length + ']']: res.data
})
// 設(shè)置開關(guān)
this.setData({
['speAllArr[' + dataset.index + '].classifyIIShowFlag']: !speAllArr[dataset.index].classifyIIShowFlag
})
2、再講道理
-
我們先說setData:
微信小程序setData數(shù)據(jù)太大解決方案——setData介紹.png
setData 函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層(異步),
同時改變對應的 this.data 的值(同步)。
-
setData需要注意的事項
- 直接修改 this.data 而不調(diào)用 this.setData 是無法改變頁面的狀態(tài)的,
還會造成數(shù)據(jù)不一致厂置。 - 僅支持設(shè)置可 JSON 化的數(shù)據(jù)。
- 單次設(shè)置的數(shù)據(jù)不能超過1024kB魂角,請盡量避免一次設(shè)置過多的數(shù)據(jù)昵济。
- 請不要把 data 中任何一項的 value 設(shè)為 undefined ,
否則這一項將不被設(shè)置并可能遺留一些潛在問題。
- 直接修改 this.data 而不調(diào)用 this.setData 是無法改變頁面的狀態(tài)的,
-
如何解決需要設(shè)置的數(shù)據(jù)量過大的問題呢
使用中括號 當然访忿, 是英文的 " [] "瞧栗,
文檔上也寫得很清楚, data可接受的值是Object醉顽;
我們只要吧這個Object傳進去就OK了沼溜;- 比如說我有一個數(shù)組, 當我改變數(shù)組中一個值的時候游添,
講道理我只需要跟新這個值就行了 - 道理是這樣 如何才能指定更新到這個值呢系草?
- 用中括號, 把需要修改的key值拼接起來就OK了唆涝!
this.setData({ ['tempArr[' + needChangeArrIndex + '].flag']: true, })
- 這樣就可以避免 setData的數(shù)據(jù)太大 帶來的問題啦~
- 當然你也可以這樣寫:
const key = `tempArr[${needChangeArrIndex}].flag`; theSetData[key] = true; this.setData(theSetData)
- 比如說我有一個數(shù)組, 當我改變數(shù)組中一個值的時候游添,