Vue如何将数组复制到本地进行编辑?为啥它适用于字符串而不适用于数组? [复制]

Posted

技术标签:

【中文标题】Vue如何将数组复制到本地进行编辑?为啥它适用于字符串而不适用于数组? [复制]【英文标题】:Vue how to copy array locally for editing? Why does it work for strings and not arrays? [duplicate]Vue如何将数组复制到本地进行编辑?为什么它适用于字符串而不适用于数组? [复制] 【发布时间】:2021-01-07 00:13:06 【问题描述】:

我做了一个演示来测试我的大型项目的问题,我正在制作一个设置菜单,我想在其中复制一些道具,编辑它们并保存它们。为此,我需要复制道具以供本地使用。出于某种原因,数组不会正确复制,并且 $set 将更改父函数的数组。见下文。

下面的子代码

<script>
export default 
  name: "HelloWorld",
  props: 
    data: Object,
  ,
  data: function()
    return
    localData : 
    
  ,
  mounted()
    this.localData = Object.assign(,this.data)
  ,
  methods: 
    changeData() 
      console.log("changing parent data");
      console.log(this.localData)
      this.localData.name = "new name"
      this.$set(this.localData.array, 0, 1000); //change first indes to 1000
    ,
  ,
;
</script>
<template>
  <div class="child">
    Child localData
    <br />
    <button @click="changeData()">Change Data</button>
  </div>
</template>

父代码

<template>
  <div id="app">
    <img  src="./assets/logo.png">
    <p>Parent data</p>
    <Child :data="data"/>
  </div>
</template>

<script>
import Child from './components/HelloWorld.vue'
export default 
  name: 'App',
  components: 
    Child
  ,
  data: function()
    return 
    data:  'name':'hello world','array':[1,2,3,4]
    
  

</script>

如图所示,按下按钮后,名称值仍然是对象的子副本的本地值,但数组不是。如何在不改变父级的情况下在本地更改数组。谢谢

【问题讨论】:

【参考方案1】:

尝试使用扩展运算符:

 this.localData = ...this.data

【讨论】:

以上是关于Vue如何将数组复制到本地进行编辑?为啥它适用于字符串而不适用于数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Gradle将所有依赖项复制到Maven存储库?

Vue.js Element-UI el-table:制作复制表进行编辑,可以将数据保存到原表

为啥我的 forEach 循环没有编辑我的数组? [复制]

为啥我不能将两个数组与“包含”进行比较? [复制]

为啥大型本地数组会使我的程序崩溃,而全局数组却不会? [复制]

为啥要修改此数组? [复制]