vue实例中data函数里 this.examlpe 的数据和 return里的数据 有区别吗?

发布于 2022-09-06 10:37:21 字数 228 浏览 24 评论 0

vue实例中data函数里 this.examlpe 的数据和 return里的数据 有区别吗?
以下data(){}中在this上属性和 return 一个数据 有和不同?

{
//...
 data () {
    this.visible1 = null
    return {
      visible2: false,
      //...
    }
  },
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

满栀 2022-09-13 10:37:21

相同点:
都是vue 实例上的对象属性,都可以通过 this.visible1 或者 this.visible2 访问。
不同点:
this.visible2 也可以通过 this.$data.visible2 访问。
实例创建之后,可以通过 vm.$data 访问原始数据对象。Vue 实例也代理了 data 对象上所有的属性,因此访问 vm.visible2 等价于访问 vm.$data.visible2 具体可以看这里

data 声明为返回一个初始数据对象的函数,就不会被所有的实例将共享引用,所以每个组件中的数据,一般通过 visible2 这样定义。

暮年慕年 2022-09-13 10:37:21

没有,都是指向当前vue实例

一影成城 2022-09-13 10:37:21
data(){
    return{
        test:123
    }
}

是将vue实例的数据以函数返回的形式来定义,防止组件间数据之间的互相影响。
官方解释:

当一个组件被定义, data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。

在其他地方通过this.test来访问该组件所定义的数据test,其中this指向vue实例,后面就是定义的数据。

感受沵的脚步 2022-09-13 10:37:21

说过更通俗的把,如果你通过在data里直接this.xxx定义,而不在return里定义的话,你在methods中修改这个值不会触发视图更新。视图只会取到初始值。除非使用vue.set

顾冷 2022-09-13 10:37:21

一楼说很清楚了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文