时间:2021-05-26
前言
我们需要先复习下原型链的知识,其实这个问题取决于 js ,而并非是 vue 。
function Component(){ this.data = this.data}Component.prototype.data = { name:'jack', age:22,}首先我们达成一个共识(没有这个共识,请补充下 js 原型链部分的知识):
解开疑问
基于此,我们来看看这个问题:
function Component(){ }Component.prototype.data = { name:'jack', age:22,}var componentA = new Component();var componentB = new Component();componentA.data.age=55;console.log(componentA,componentB)此时,componentA 和 componentB data之间指向了同一个内存地址,age 都变成了 55, 导致了问题!
接下来很好解释为什么 vue 组件需要 function 了:
function Component(){ this.data = this.data()}Component.prototype.data = function (){ return { name:'jack', age:22,}}var componentA = new Component();var componentB = new Component();componentA.data.age=55;console.log(componentA,componentB)此时,componentA 和 componentB data之间相互独立, age 分别是 55 和 22 ,没有问题!
总结
自己突然对这个问题懵逼,不过事后想了想还是自己基础知识忘得太快。以前学习 js 的时候,最基础的:构造函数内和原型之间的区别都模糊了。想不到 vue 这个小问题让我温故而知新了一次。
到此这篇关于Vue组件为什么data必须是一个函数的文章就介绍到这了,更多相关Vue组件data是函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
官方解释data必须是函数构造Vue实例时传入的各种选项大多数都可以在组件里使用。只有一个例外:data必须是函数。实际上,如果你这么做:Vue.compone
外部引入HTML部分script部分Vue.component('my-info',{template:`{{data}}`,//注意:data必须是一个函数d
前言在Vue中,data选项是个好东西,把数据往里一丢,在一个Vue组件中任何一个地方都可以通过this来读取data中数据。但是要避免滥用this去读取dat
Vue.extend(options)参数:{Object}options用法:使用基础Vue构造器,创建一个“子类”。参数是一个包含组件选项的对象。data选
组件可以有自己的data,并且data必须是一个function。在下面这个例子中,data返回了一个在外部定义的对象。并且这个组件在页面中使用了3次,点击+1