有可能$watch Vue $refs吗?

我想针对嵌套在当前Vue实例中但在ready回调中的子组件设置逻辑,$refs.childcomponent在处理时最初是undefined.

inside 100

this.$watch('$refs', function() {
    console.log("not firing");
}, { deep: true });

结果:错误:超过最大调用堆栈

100 property of the instance

watch: {
  '$refs': {
     handler: function() { console.log("hit"); },
     deep: true
  }
}

结果:什么都没有.

推荐答案

你可以$watch $refs.<name>.<data>,但不能$refs.<name>本身,更不用说$refs了.

https://jsfiddle.net/kenberkeley/9pn1uqam/

const Counter = {
  data: () => ({
    i: 0
  }),
  template: `<fieldset>
    <p>Counter</p>
    <code>i = {{ i }}</code>
    <button @click="i += 1"> Add One </button>
  </fieldset>`
}

const App = {
  components: { Counter },
  mounted () {
    this.$watch(
        () => {
            return this.$refs.counter.i
        },
      (val) => {
        alert('App $watch $refs.counter.i: ' + val)
      }
    )
  },
  template: `<fieldset>
    <p>App</p>
    <counter ref="counter" />
  </fieldset>`
}

new Vue({
    el: '#app',
    render: h => h(App)
})

Vue.js相关问答推荐

正在try 访问vutify中v-select(ItemProps)的嵌套json值

保持页面重新加载之间的状态

在计算(computed)属性上调用数组方法

超出最大调用堆栈大小 - Vue路由

Vuetify grid layout - 如何填充网格中元素的高度

如何使用带有自定义标签和类的`transition-group`

Amazon EC2 错误:监听 EACCES 0.0.0.0:80

请求正在进行时显示加载器

如何告诉 Vue 应用使用 Firebase 模拟器?

当 v-for 与对象的属性一起使用时,将 v-model 与复选框一起使用

Select 下拉列表中的复选框后如何清除 v-autocomplete(多个)搜索输入?

所有 vue props和数据都给出错误 Property属性在 type 上不存在,带有 typescript

Vue如何将动态ID与v-for循环+字符串中的字段连接起来?

Vuetify 数据表不显示数据

Vue cli 在 css 中构建生产更改不透明度

如何在 NuxtJS 中设置全局 $axios 标头

Vue路由在新页面上回到顶部

Vue.js 和 jQuery datepicker/timepicker 双向绑定

vue-router 如何使用 hash 推送({name:"question"})?

如何在 VeeValidate 中自定义错误信息(字段名称)?