将道具传递给 Vue 3 Typescript 中的数据对象

Passing a prop to data object in Vue3 Typscript

我有一个 Vue 组件(table),它通过 props 接收一组对象。 现在我想删除、添加或编辑此数组中的一些条目,但我不能这样做,因为该道具是只读的。 所以我想在收到 属性 后,我只是将那个东西复制到所述组件的数据部分中的一个对象中,我应该可以编辑它,但我还没有找到如何去做。

items 是我的 属性 而 ditems 是我的数据对象

  data() {
    return { ditems: this.items };
  },

不工作,

也不工作
  data() {
    let pitems = Object.assign({}, this.items);
    return { ditems };
  },

所以我 运行 没有想法,我希望有人能帮助我 提前感谢您的宝贵时间

当您尝试编辑道具值时,使用 Object.assign()JSON.parse(JSON.stringify()) 复制道具是正确的(顺便说一句,我推荐 JSON 解析方式)。

但是,复制方法最好放在 watch 而不是 data() 中,因为 prop 数据最初可能是空的,并且在 api 请求或其他东西之后带有数据.所以你最好这样做:

data() {
  return {
    ditems: {}
  }
}
watch: {
  items: {
    handler(val) {
      if (Object.keys(val).length) { // check whether items data is empty
        this.ditems = JSON.parse(JSON.stringify(val))
      }
    },
    deep: true
  }
}

顺便说一下,您使用的似乎是 Vue2,因为 Vue3 使用 setup() 而不是 data()