javascript 与组分API克隆支柱的VueReact性

t9eec4r0  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(149)

我有一个组件从父组件中获取 prop ,现在我只想克隆 prop --我不想在父组件中也反映这些更改。

<template>
  <input-text v-model="form.name" />
</template>

export default defineComponent({
  props: {
    record: {
      type: Object,
      required: true,
      default: () => ({}),
    },
  },
  setup(props) {
    const form = ref({})

    // when props change, clone them
    watchEffect(() => {
      dForm.value = props.record
    })

    return { form }
  },
})

现在,我想在每次props到达时创建一个副本-我不希望v-model更改父组件中的props-我只希望更改在本地发生,在这个组件内部。我如何克隆props.record?我尝试了Object.assign({}, props.record)和其他一些方法,但都不起作用。

0x6upsns

0x6upsns1#

使用深度观察者

const form = ref({})
watch(
   () => props.record,
   (newValue) => { Object.assign(form.value, newValue) },
   { deep: true } // <- deep watcher
)

小心使用

深度监视需要遍历被监视对象中的所有嵌套属性,并且在大型数据结构上使用时开销可能会很大。请仅在必要时使用它,并注意性能影响。
x一个一个一个一个x一个一个二个一个x一个一个三个一个

相关问题