• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

小程序this.setData修改数据之后,data中其他数据也跟着一起改变了

Data: 2020-04-06 21:03:48Form: JournalClick: 11

问题描述:

小程序js文件中,在data中定义两个数据,settingData和defaultSettingData都是空对象,如图

7c5bf54d219f609253e69de0fa739ed8_b420e5ff274a41239c2daca3c693542b.png


在页面初始化时,就为两个数据赋值

b58c6c8b69f7d7c666d42a492bbe0896_138c641c8f1c4d6b9318c70ac68af070.png


 之后,我去单独修改settingData的时候,defaultSettingData也跟着一起改变了,并且和settingData一模一样。

1fa461de9722d65f716db4795801928c_1745f7fabca14d8aa14832ad0354528a.png


 解决:

原来问题在于初始化赋值时,我为两个数据赋得同一个值,导致两个对象只是指向了同一个对象,只是一次浅拷贝,不论修改哪个,另一个都会跟着一起变。

所以,最后解决的办法就是把其中一个数据进行深拷贝,这样不论如何修改,都不会相互影响了。

小程序可以使用es6的展开运算符,可以实现数据的分离。当然也可以使用JSON.stringify和JSON.parse(如果可以的话)。


b4ff3c08f8b91fd24c47728523b19d3d_ea0075da0a104fdc891aa05fdec7226d.png


最后,我改变了defaultSettingData的拷贝方式,就成功了。

 这种将一份数据同时保存成两份的情况也比较少见,暂且记录一下吧!


Name:
<提交>