美文网首页
vue 为什么组件的data要写成返回对象的函数

vue 为什么组件的data要写成返回对象的函数

作者: inspg | 来源:发表于2019-01-01 15:38 被阅读0次

原因:对象为引用类型,当重用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对(Object的实例),引用地址不同,则不会出现这个问题

上面解释完,你可能还是不大清楚,下面我们举个简单的例子:

  // 1.对象方式(所有重用的实例中的data均为同一个对象)

  var data = {

    x: 1

  }

  var vm1 = {

    data: data

  }

  var vm2 = {

    data: data

  }

  vm1.data === vm2.data // true,指向同一个对象

  // 2.函数方式(所有重用的实例中的data均为同一个函数)

  var func = function () {

    return {

      x: 1

    }

  }

  var vm3 = {

    data: func

  }

  var vm4 = {

    data: func

  }

  vm3.data() === vm4.data() // false,指向不同对象

注意: 函数方式中data都指向同一个函数,但这个函数每次的返回值都是一个新的对象,可以尝试如下(效果相同)

{x:1} === {x:1} // false

new Object({x:1}) === new Object({x:1}) // false

相关文章

  • vue 为什么组件的data要写成返回对象的函数

    原因:对象为引用类型,当重用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的...

  • vue相关的知识

    1. 组件的data为什么必须是函数? 组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次...

  • 9道vue面试题

    2.VUE组件data为什么必须是函数 答:Vue组件可能存在多个实例,如果使用对象形式定义data,则会导致它们...

  • Vue相关

    1:vue组件需要注意的事项? 组件参数的data值必须是函数,同时这个函数要求返回一个对象 作用:使用函数会形成...

  • vue 中的 data 为什么是函数?

    new Vue() 实例中,data可以是直接是一个对象,为什么在vue组件中,data必须是一个函数呢?因为组件...

  • vue题库

    为什么vue组件中data必须是一个函数? 组件是可复用的,当复用组件时,由于数据对象指向的是同一个data对象,...

  • Vue中data为什么 是一个函数

    分析:组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的 data,...

  • 最新前端面试题总结

    vue相关 vue data为什么返回一个函数 vue父子兄弟组件通信 vuex有哪些属性 双向绑定实现原理 vu...

  • Vue - 找不到某些依赖或者模块 data functions

    这个问题是 Vue 实例内,单组件的data必须返回一个对象;如下 为什么要 return 一个数据对象呢? 官方...

  • 11. 组件中的data以及data为什么必须是函数

    组件中的data保存的是自己的数据,但是这个data必须是个函数,然后返回一个对象的形式 组件中的data为什么必...

网友评论

      本文标题:vue 为什么组件的data要写成返回对象的函数

      本文链接:https://www.haomeiwen.com/subject/aqbnlqtx.html