详解Vue的组件中data选项为什么必须是函数
网络编程 2021-07-04 14:06www.168986.cn编程入门
这篇文章主要给大家介绍了关于Vue的组件中data选项为什么必须是函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Vue具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化来一起学习学习吧
官方解释
data 必须是函数
构造 Vue 实例时传入的各种选项大多数都可以在组件里使用。只有一个例外data 必须是函数。实际上,如果你这么做
Vue.ponent('my-ponent', { template: '<span>{{ message }}</span>', data: { message: 'hello' } })
那么 Vue 会停止运行,并在控制台发出警告,告诉你在组件实例中 data 必须是一个函数。但理解这种规则为何存在也是很有益处的,所以让我们先作个弊
<div id="example-2"> <simple-counter></simple-counter> <simple-counter></simple-counter> <simple-counter></simple-counter> </div> var data = { counter: 0 } Vue.ponent('simple-counter', { template: '<button v-on:click="counter += 1">{{ counter }}</button>', ``` // 技术上 data 的确是一个函数了, Vue 不会警告, // 我们却给每个组件实例返回了同一个对象的引用 ``` data: function () { return data } }) new Vue({ el: '#example-2' })
=============以下为个人理解,如果有误,请指出,谢谢指教
Vue.ponent('xxx',{ template:'{{counter}}', data:function(){ return counter=0; } })
Vue在注册到全局/局部并生成实例时,它是具有自己的作用域的,也就是说
在template 字符串模板中如果存在一个变量名与VUE实例的变量名一致的时候,这个变量只会是组件中的变量,而不会是VUE的全局变量
比如
//以下代码中,组件中的count和Vue中的count是一样的变量名,在组件中只会显示0而不是2 Vue.ponent('simple-counter',{ template:'<button>{{count}}</button>', data:function(){ return count=0; } }); vm=new Vue({ el:'#example-2', data:{ count:2 } })
以上代码从原型链上理解
var ponent=function(){}//为了让组件有自己的作用域,它必须包含私有变量data,所以简单化的理解应该是这样的 var ponent=function(){ this.data=this.data();//存在私有的data属性 } ponent.propotype.data=function(){ return {count:0} } //当我们在template中使用数据的时候,我们是调用的ponent的私有变量data //如果我们不以函数的形式处理又会如何呢? var ponent=function(){ //不存在私有的data属性 } ponent.propotype.data= {count:0} //此时,data不作为私有变量,就会有暴露的风险,而且,它指向的是{count:0}的引用,所以当重复创建组件的时候,ponent的data都指向了同一个引用。会相互影响。
如果不以原型链的形式处理,也可以不传入函数
function ponent(d) { this.data = d; } var = new ponent({ count: 1 }); var 1 = new ponent({ count: 1 });
到此这篇关于详解Vue的组件中data选项为什么必须是函数的文章就介绍到这了,更多相关Vue组件中data选项是函数内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程