VueJS $watch $refs

新手上路,请多包涵

是否可以 $watch Vue $refs

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

里面 ready()

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

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

watch 实例的属性

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

结果:什么都没有。

原文由 Kiee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 714
2 个回答

您可以 $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)
})

原文由 kenberkeley 发布,翻译遵循 CC BY-SA 4.0 许可协议

不, $refs 没有反应,手表无法工作。

原文由 Linus Borg 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏