⼩程序setData对data数据影响问题
我是纯前端的,有些时候没有后端接⼝,只能模拟⼀些数据来操作。偶然之下,发现了setdata 的⼀些机制,也有可能不对,请多指教。
先放结论:data的变量通过setdata绑在⼀起,是同步变化的
准备做⼀个⼀键还原界⾯的按钮事件,如果有后端接⼝,只需调⼀下接⼝,就可以了。问题是没有,于是想弄两个⼀模⼀样的数组A,B;A⽤来渲染界⾯,⼀键还原的时候,就把B的值赋给A,从⽽引起页⾯重新渲染,达到重置界⾯的效果。
结果⼀点反应也没有。
data⾥有模拟的数组  itemleft  itemright,⼆选⼀,
定义代码是这么写的
this.setData({
  uniqueitem: (id == 'unfinish') ? this.data.itemleft[index] : this.data.itemright[index],
  cloneitem: (id == 'unfinish') ? this.data.itemleft[index] : this.data.itemright[index],
  baninput: (id == 'unfinish')?false:true
})
这是⼀键还原的代码
this.setData({
  uniqueitem:this.data.cloneitem减少碳排放
})
后来通过console.log发现  uniqueitem、cloneitem和this.data.itemleft[index] 的值是⼀模⼀样的,意思是,当我改变uniqueitem的时候,其他两个都会跟着变。
然后,我把cloneitem的值通过缓存还获取,代码变成了这样
this.setData({
  uniqueitem: (id == 'unfinish') ? this.data.itemleft[index] : this.data.itemright[index],
  baninput: (id == 'unfinish')?false:true
})
var that=this
  key: 'item',
  success: function(res) {
    console.log(res)
    that.setData({
      cloneitem:res.data
    })
  },
})
高档女装品牌
this.setData({
  uniqueitem:this.data.cloneitem
})
改成这样之后,⼀键还原第⼀次正常,后⾯再点全不正常
这是测试的console顺序
console.log(this.data.itemleft[0])
console.log(this.data.uniqueitem)
console.log(this.data.cloneitem)
事先说明,改变date,改的是2的date
我通过⼀个函数改变了date,加1,
洛阳市旅游景点
可以看到 1和2同时改变,3不变;
⼀键还原第⼀次
可以看到,1不变,3的值赋给了2;到⽬前正常
再次改变date,
白日放歌须纵酒可以看到,2和3⼀起变,1不变了
⼀键还原
和上⾯⼀样不变了
后来我改成
var aaa = this.data.cloneitem;
this.setData({
  uniqueitem:aaa
中国移动积分怎么兑换话费
家中出现中华婪步甲该如何应对
})
效果和上⾯⼀样。
结论,
当data有3个变量,a和b、c
this.setData({
  a:this.data.b
  c:this.data.b
})
意思是,a和b绑⼀起,c和b绑⼀起,3个⼀起变,改变⼀个等于改变3个。个⼈猜测,应该是存放变量a,b,c 的地址变成⼀个了。
this.setData({
  a:this.data.b
})
a和b⼀起变。
this.setData({
  a:this.data.c
})
a不和b⼀起变,和c⼀起变。
简⽽⾔之,data的变量通过setdata绑在⼀起,是同步变化的,要⼩⼼。
总结
以上所述是⼩编给⼤家介绍的⼩程序 setData 对 data数据影响问题,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!