Vue.js 3-替换/更新反应性对象而不会失去反应性

2022-04-07 00:00:00 vue.js vuejs3 vue-composition-api

我需要在获取后使用一些数据更新反应对象:

  setup(){
    const formData = reactive({})

    onMounted(() => {
      fetchData().then((data) => {
        if (data) {
          formData = data //how can i replace the whole reactive object?
        }
      })
    })
  }

formData = data将不起作用,formData = { ...formdata, data }

有没有更好的方法?


解决方案

reactive应该定义一个具有嵌套字段的状态,可以如下所示:

 setup(){
    const data= reactive({formData :null })

    onMounted(() => {
      fetchData().then((data) => {
        if (data) {
          data.formData = data 
        }
      })
    })

  }

如果只有一个嵌套字段,则使用ref

  setup(){
    const formData = ref({})

    onMounted(() => {
      fetchData().then((data) => {
        if (data) {
          formData.value = data 
        }
      })
    })

  }

相关文章