vue的组件中无法直接访问vue实例中的data数据(后续的‘父子通信’可实现组件间数据的访问),组件中拥有一个存放自己数据的地方:即自身的data属性(除此之外也有methods等属性,从官网的解释来看,vue组件就是一个vue实例)
但组件中的data属性与实例中的data属性有所不同
在vue实例中,data属性是一个对象;而在组件中的data是一个函数,且该函数返回一个对象(如果将组件中的data定义为对象,浏览器会爆出错误),这是因为要实现组件的复用性
具体解释例子如下:
需求:实现一个计数器的组件,并且不会相互影响
实现代码如下:
代码 浏览器效果图如上,需要实现两个计数器互不影响,但同时调用一个组件,如果组件中的data是一个对象,那么两个计数器会同时使用这个data中的counts,那么两个组件在点击+和-时,会让两个counts同时改变;而如果data是一个函数,函数拥有自己的块级作用域,每次调用函数会返回一个新的对象,即每一个函数不会共享同一个data对象,所以不会互相影响!
网友评论