用setdata直接传递整个数组或者对象的困惑
按本人之前的理解,用setdata修改某整个数组或者对象,属于引用
因此,下面的代码,在变量t和this.data.ttt通过setdata建立引用关系后,修改t,那么ttt应该相应变动,虽然没有渲染,变量t和this.data.ttt是相同内存的,预期最后的console.log输出应该是一致的,
let t = [{ key1: 999 }] this .setData({ ttt: t }) t[0].key1 = 888 console.log(JSON.stringify(t)) console.log(JSON.stringify( this .data.ttt)) |
这一段代码放在我自己正在开发的小程序的index页面的onload()中,表现和预期一致:
!!诡异的事情是这样发生的,把同一段代码放到官方的小程序demo或者weui演示里面的index页面的onload()中,表现确完全不同,t和this.data.ttt的值不同了,结果如下
求大佬解惑
附:setdata整个数组或者对象,个人主要用在这样的情形:对整个需要渲染的数组,需要进行相对复杂的逻辑处理,为了避免频繁的setdata单个元素或者属性,采取了在整个逻辑处理完毕后,再一次性setdata整个对象