VueJS $观看$ refs

Kie*_*iee 18 javascript vue.js

$watchVue 有可能$refs吗?

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

内 ready()

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

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

watch 实例的属性

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

结果:没事.

ken*_*ley 20

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

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

  • 安装时,$ refs.<name>可能未定义.你应该`这个.$ watch(()=>这个.$ refs.comp.prop,(val)=> {...})`当创建comp时. (3认同)
  • 这是例外的答案吗?OP 说:`$refs.childcomponent 在处理时最初是未定义的。`我处于同样的情况,模板看起来像:`&lt;div v-if="product"&gt;&lt;div ref="myRef"&gt;` 所以在 mount 中`this.$refs.myRef` 未定义,并且 `this.$refs.myRef.someProp` 将抛出。谷歌搜索“vue watch ref”在顶部给我这个答案,但我看不出这个答案如何为我或OP工作 (3认同)
  • 我解决这个问题的方法是观看 `product`: `watch: { Product() { this.$refs.myRef` 因为如果 Product 为真,则 `v-if` 有条件地渲染 ref。 (2认同)

Lin*_*org 15

不,$ refs不是被动的,手表不起作用.

  • 那么 Vue 响应 DOM 元素变化的正确方式是什么? (2认同)