【问题标题】:VUE 3 - watch not returning correct valuesVUE 3 - 观察不返回正确的值
【发布时间】:2021-04-06 14:47:11
【问题描述】:

在 Vue 3 应用程序中,我正在引用 store getter 并观察其值的变化以执行一些逻辑。

我需要比较新旧值。但是,对于传递给 watch 函数的每个参数,我得到了相同的值。

这是我的设置:

<script>
import { useStore } from 'vuex'
import { watch } from 'vue'

export default {
  setup() {
    const store = useStore()
    let text = store.getters['SOME_ARRAY']
    
    watch(text, (text, prevText) => {
      console.log(text.length, prevText.length)
    })    
  }

   return { text }
}

</script>

console.log 中,两个长度相同(即,3 3、4 4、5 5...)。

【问题讨论】:

    标签: javascript vue.js vuejs3


    【解决方案1】:

    text 应该在 getter 上使用 computed,以便它在 watch 中的引用保持最新:

    // let text = store.getters['SOME_ARRAY']
    let text = computed(() => store.getters['SOME_ARRAY']) ✅
    

    demo

    【讨论】:

      【解决方案2】:

      你可以试试这个吗?

      store.watch(() => store.getters['SOME_ARRAY'], (oldValue, newValue) => {
        console.log(oldValue)
        console.log(newValue)
      })
      

      【讨论】:

      • 这个怎么样?
      • 所以,据我所知,该商店没有watch 属性。
      • 嗯...学到了一些新东西。但它仍然不起作用:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2021-06-04
      • 2017-12-23
      • 2020-05-07
      • 2019-07-21
      • 2018-11-26
      相关资源
      最近更新 更多