如果data中有对象或者数组,该如何setData?
比如:
Page({
data: {
m_obj: {'a': {'num': 0}, ...},
}
click: function() {
let obj = this.data.m_obj; // A
/***modify obj***/ // B
this.setData({
m_obj: obj, // C
});
}
})
我想整体替换obj变量,上述代码是否有问题? 官方文档中说不能直接操作data中的变量,否则会造成数据不一致,那么上述代码中的A和B是否就会造成代码不一致?如果是的话,我该如何修改整个对象呢(整体替换而不是对每个属性set一次)?
给 this.data赋值之后,立即有setData是不会有问题的
obj是一个引用,对obj的修改实际上也是对data中数据的修改,所以我担心对obj做了修改,会不会算是违反了官方文档中“不能直接操作data数据”的规则,从而造成数据不一致。目前实际代码看是没有问题的,但是心虚啊。。。
没事,官方的一些demo,他也有直接给this.data赋值,然后立马就setData了,不会有问题的
好的,多谢
官方说的应该是不直接修改 this.data,用setData应该没啥问题吧
代码A处,obj是一个引用,所以对它赋值应该跟对this.data赋值是一样的,这也是我疑惑的地方
this.data=a;不能这样用,想修改data中的值要用setData,官方应该说的是这个意思吧