【问题标题】:How do I return variables in watchEffect from vue 3 setup function如何从 vue 3 设置函数返回 watchEffect 中的变量
【发布时间】:2021-12-14 11:11:35
【问题描述】:
setup(props) {
  const id = ref(props.id)
  watchEffect(() => {
    const { data1, data2, data3 } = getData(id)
  })

  return { data1, data2, data3 }
}

这只是部分代码,watchEffectrefgetData都是导入的,但是下面的return函数说的是data1, data2, data3 未定义,这是为什么呢?

【问题讨论】:

    标签: javascript vuejs3 vue-composition-api


    【解决方案1】:

    在函数外声明refs

    setup(props) {
      const id = ref(props.id);
      const data1 = ref(null);
      const data2 = ref(null);
      const data3 = ref(null);
    
      watchEffect(() => {
        [data1.value, data2.value, data3.value] = getData(id)
    
      })
    
      return { data1, data2, data3 }
    }
    

    如果你返回一个对象:

    setup(props) {
      const id = ref(props.id);
      const data1 = ref(null);
      const data2 = ref(null);
      const data3 = ref(null);
    
      watchEffect(() => {
        {
          data1: data1.value,
          data2: data2.value,
          data3: data3.value
        } = getData(id)
    
      })
    
      return { data1, data2, data3 }
    }
    

    我没有你的其余代码,但我相信它可以更优化......

    【讨论】:

    • 我从 getData 函数返回了一个对象,所以我必须在 setup 函数中将它解构为一个对象
    • 我编辑了我的答案。我不记得是data1: data1.value 还是data1.value: data1。两者都试一下,请告诉我哪一个好:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多