Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 如何复制属性为array的vue状态对象?_Vue.js_Vuex - Fatal编程技术网

Vue.js 如何复制属性为array的vue状态对象?

Vue.js 如何复制属性为array的vue状态对象?,vue.js,vuex,Vue.js,Vuex,我正在复制vuex状态。该数组结构如下所示: export const store = new Vuex.Store({ state: { contacts: [ { id: 122345, name: "Marko Marki", email: "marko@marko.com", phones: ["478 8273", "787 7671"], avatar: "https://avat

我正在复制vuex状态。该数组结构如下所示:

export const store = new Vuex.Store({
  state: {
    contacts: [
      {
        id: 122345,
        name: "Marko Marki",
        email: "marko@marko.com",
        phones: ["478 8273", "787 7671"],
        avatar: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"
      },
      {
        id: 122346,
        name: "Ivan Ivandi",
        email: "ivan@ivan.com",
        phones: ["787 7671"],
        avatar: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"
      },
getContactsCopy(state) {
      const copyContacts = state.contacts.map(contact => ({...contact}))
      console.log(copyContacts)
      return copyContacts
    }
我正在复制此状态以将其传递给我的编辑组件,以便像这样处理:

export const store = new Vuex.Store({
  state: {
    contacts: [
      {
        id: 122345,
        name: "Marko Marki",
        email: "marko@marko.com",
        phones: ["478 8273", "787 7671"],
        avatar: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"
      },
      {
        id: 122346,
        name: "Ivan Ivandi",
        email: "ivan@ivan.com",
        phones: ["787 7671"],
        avatar: "https://avatars0.githubusercontent.com/u/9064066?v=4&s=460"
      },
getContactsCopy(state) {
      const copyContacts = state.contacts.map(contact => ({...contact}))
      console.log(copyContacts)
      return copyContacts
    }

…在我的编辑组件中,我得到了预期的copyContacts数据,但对于电话阵列中的电话号码,我仍然有原始状态的参考,这不是我想要的,对于所有其他属性,如姓名、电子邮件等,我有副本,取消编辑模式时,原始状态保持不变,电话号码除外。我如何复制我的每个对象属性,包括电话阵列?

如果我复制,很抱歉可能会复制,但复制您的参考是8年old@Pokreniseweb这与像这样基本的事情是毫不相干的。归根结底,Vue仍然只是Javascript,核心原则是一样的。我明白这一点,但我需要新的、现代的解决方案,在我的案例中使用vueThere的最佳实践在ES6中不是内置的。如果您想要一个“新鲜而现代”的解决方案,您可以将引用答案中的函数重命名为
shinyNewModernClone2019()
…;-)它仍然可以正常工作(顺便说一句,多年来它甚至得到了改进)。您还可以看看它是如何实现的(以及递归性)。