首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么vue文档说参考文献实际上是没有反应的?

为什么vue文档说参考文献实际上是没有反应的?
EN

Stack Overflow用户
提问于 2019-02-28 14:15:30
回答 1查看 8.9K关注 0票数 12

vue官方文件的一句话说:

$refs...are无反应性。

然而,我已经在模板中使用过这样的引用,它们确实是反应性的,甚至在方法、计算道具和观察者中(只要您在挂载后访问它)。一些第三方vue库例如这个还提供了使用/依赖于参考文献的反应性的特性。

有谁能澄清一下官方医生所说的裁判不是被动的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 14:49:26

在Vue框架的上下文中,您误解了什么是反应性的东西。当然,您可以在组件挂载后访问$refs对象的值,但这并不意味着该对象是反应性的。

当数据是反应性的,这意味着对该数据的值的更改将触发依赖于该数据的值的组件的某个部分的“反应”,例如重新呈现模板、重新计算一个计算变量或触发一个观察者。

阅读关于反应性的文档。

下面是一个例子:

代码语言:javascript
运行
复制
Vue.config.productionTip = false;
Vue.config.devtools = false;

new Vue({
  el: '#app',
  mounted() {
    console.log('$refs.foo in mounted', this.$refs.foo);  
  },
  watch: {
    '$refs.foo':{
      immediate: true,
      handler(value) {
        console.log('$refs.foo watcher', value);
      }
    }
  }
})
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div ref="foo"></div>
  <div v-if="$refs.foo">
    If $refs.foo was reactive, the template would update and you would see this message
  </div>
</div>

在这个例子中,您可以看到$refs.foo的观察者最初记录$refs.foo的值是undefined。这是有意义的,因为监视程序在组件挂载之前就已经启动了,因此还没有设置$refs对象的属性。然后,在mounted钩子中,我们看到$refs.foo的值已按预期设置。

如果$refs是反应性的,那么我们将看到模板更新,因为v-if="$refs.foo"指令将被计算为true。在设置$refs.foo值之后,我们还会再次看到观察者触发,记录下$refs.foo的新值。然而,由于$refs不是反应性的,所以这些事情都不会发生。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54927707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档