【问题标题】:Vue composition api - copy reactive data objectVue 组合 api - 复制反应数据对象
【发布时间】:2022-01-10 21:36:40
【问题描述】:

如何使用 vue 组合 API 制作反应性对象的简单副本。

我想做

状态 = 形式

而不是

state.var1 = form.var1 state.var2 = form.var2

这里有一个例子来说明为什么我有这个问题。

// <FormModal>
<template>
<button @click="submitHandler" >Submit</button>
</template>

<script>
import { defineComponent, reactive } from "vue"
export const defineComponent({
setup(){
  const state = reactive({
    var1: "var1",
    var2: "var2"
  })
  function submitHandler(){
    emit("submit", state)
  }
  return { submitHandler }
}
})
</script>
// <Parent>
<template>
  <form-modal @submit="formSubmitHandler" />
</template>

<script>
import { defineComponent, reactive } from "vue"
export const defineComponent({
 setup(){
  const state = reactive({
    var1: "var1",
    var2: "var2"
  })
  function formSubmitHandler(form){
    // state = form => What I would like to do!!!
    state.var1 = form.var1
    state.var2 = form.var2
  }

  return { formSubmitHandler }
}
})
</script>

【问题讨论】:

    标签: vuejs3 reactive vue-composition-api


    【解决方案1】:

    你可以解构你的对象

    function formSubmitHandler(form){
      state = {...form}
    }
    

    const form = {
        var1: "var1",
        var2: "var2"
      }
    const state = {...form}
    console.log(state)

    【讨论】:

    • 它仍然是被动的吗?
    • 解构不起作用,因为state 是一个常量
    • 为什么不呢,状态是对象而不是原始对象
    • 这个问题与vue的composition api和reactive helper有关。在这种情况下它不起作用
    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 2020-10-23
    • 2022-01-03
    • 2021-03-15
    • 2021-12-29
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多