微信公开课
微信公开课小程序热门讨论关于「数组复制后setData疑问」的小程序开发问题
补充:dataList赋值给CA后,再修改dataList的一个值,再打印CA,CA跟着改变了是什么原因如何让CA不跟着dataList改变wxml代码如下viewwx:for={{dataList}}wx:key={{unique}}bindtap=test{{itemval}}viewjs代码
展开:dataList赋值给CA后,再修改dataList的一个值,再打印CA,CA跟着改变了是什么原因如何让CA不跟着dataList改变wxml代码如下:<viewwx:for={{dataList}}wx:key={{unique}}bindtap=test{{itemval}}<viewjs代码如下:varca=;Page({data:{dataList:[{name:1,val:1},{name:2,val:2},],},onLoad:function(options){ca=thisdatadataList;consolelog(ca);}, test:function(e){ca=thisdatadataList;consolelog(ca)vard=dataList[0]name; thissetData({[d]:3,})consolelog(ca)}})即速小程序:深拷贝一下ca=JSONparse(JSONstringify(thisdatadataList)):因为两者指向的是同一个内存地址,JSONparse(JSONstringify())虽然可以实现楼主需求,但是该方法也存在缺陷,建议楼主学习一下JS内存调用机制与对象深度拷贝:JSONparse(JSONstringify([youobjectarray]));
更多有关「数组复制后setData疑问」的讨论可以前往微信公开课小程序参与互动哦!了解更多