首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么当我更改从list1克隆来的另一个list2中的数据时,list1中的数据会自动更改?使用Vue.Draggable

为什么当我更改从list1克隆来的另一个list2中的数据时,list1中的数据会自动更改?使用Vue.Draggable
EN

Stack Overflow用户
提问于 2019-11-07 20:34:30
回答 1查看 231关注 0票数 0

我在我的Vue项目中使用Vue.Draggable,并试图从sider拖动(克隆)一个按钮到一个可拖动的组件中。

当我将按钮克隆到组件中时,我想修改数据。但我发现,当我修改与组件绑定的列表中的数据时,sider使用的原始列表会自动更改。

在Vue.Draggable中有没有某种同步机制?我只想更改组件中的对象数据。

我尝试使用Chrome浏览器中的vue扩展来手动修改list2中的对象。而且这种情况仍然会发生。所以我认为这可能不是我代码中的bug。

代码语言:javascript
运行
复制
addEntity (conditionID, entity) {
                if (!entity.forChoose) {

                }
                else {
                    let variable = 0;
                    for (let i = 0, len = this.whens.length; i < len; i++) {
                        if (this.whens[i].entity[0].id == entity.id) {
                            variable++;
                        }
                    }
                    this.whens[conditionID].entity[0].forChoose = false;
                    this.whens[conditionID].entity[0].variable = variable;
                    this.whens[conditionID].entity[0].name = entity.name + '-fake';
                }
            },

上面的代码是当我将数据拖到组件中,并更改了一些变量时的事件。

虽然我没有对从中克隆数据的Sider中的原始数据做任何操作,但它仍然发生了更改。

有没有办法在不影响原始数据的情况下改变拖拽的数据?请帮帮我,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 21:24:16

我认为这是因为它的不变性。因此,在更改列表之前,您是否可以尝试使用扩展运算符来创建列表的新浅层副本。

如何使用扩展运算符(三点)

让newArrayOfWhens = ...this.whens

然后在代码中使用"newArrayOfWhens“数组

如果需要,您也可以创建深度克隆,但如果不需要,请尽量避免。您可以使用一个名为"lodash“的库来轻松地完成这项工作,deepClone

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58748902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档