vue.js - vue 3 观看单个状态属性

标签 vue.js vuejs3 vue-composition-api

我的设置功能:

  setup() {

    const state = reactive({
      // .....
      venueFilter: null,
    })


    const venueFilter = ref(state.venueFilter);
    watch(venueFilter, ()=> {
      console.log('invoked watch');
      if(venueFilter) {
        doSomething();
      }
    });

    return {
      ...toRefs(state),
      //.....
    }
  }

当模板中的 state.venueFilter 更改时,上面的 watch 不会被触发(console.log('invoked watch'); 不会被打印。那么如何我要观看 state.venueFilter 吗?

最佳答案

您不能从这样的响应式对象的属性中进行引用。这一行:

const venueFilter = ref(state.venueFilter); //venueFilter will not react to changes in state.venueFilter

相反,您可以传入 getter 函数作为 watch 的第一个参数来返回值:

watch(()=>state.venueFilter, ()=> {
  console.log('invoked watch');
});

Here's a working example to demonstrate

您也可以先调用 toRefs(state) 并传入从中创建的venueFilter ref。

关于vue.js - vue 3 观看单个状态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69665639/

相关文章:

css - 旋转后图像无法正确显示

javascript - Vue 2 <keep-alive> 不能与 <router-view> 和 key 一起使用

vue.js - 视觉 : Vue Router is not navigating to any routes

typescript - 如何发出显示/隐藏加载程序覆盖?

javascript - 如何在 Vue3 组合 API 上使用 Vue2 插件?

javascript - VueJS Google 放置自动完成功能

meteor - 使用Meteor + Vue + D3,我应该把d3代码放在哪里?

vuejs3 - Vue 3、Composition Api 'reactive' 上的双向数据绑定(bind)无法正常工作

javascript - 命名 Vue 3 js 模块时以 'use' 开头的文件名是惯例吗?

javascript - 如何阻止用户编辑 URL