组件可以访问Vue实例数据吗

组件是一个单独功能模块的封装:
这个模块有属于自己的HTML模板,也应该又属于自己的data数据

组件中的数据是保存在哪里呢?顶层的Vue实例中吗?
经过测试 我们发现是不能访问的,即使可以访问,如果将所有数据都放在Vue实例中,Vue实例就会变得非常臃肿,Vue组件应该有自己保存数据的地方 组件对象也有一个data属性(组件的原型就是指向Vue的,也可以有methods属性,生命周期) 只是这个对象属性必须是一个函数,而且这个函数返回一个对象,对象内部保存着数据

为什么组件data属性必须是函数
写成函数形式:如果复用组件的话,它们并不是共用同一个对象,每次调用组件的时候都会data属性都会renturn一个新的对象,函数在每次执行的时候都会创建一个新的栈空间,他们的内存地址都不一样,保证各个组件之间使用变量不会仙相互影响,组件都是要复用的,但是要保证每个复用的地方都要有自己的逻辑
每一个组件都需要有一个data来保存属于自己的状态

猜你喜欢

转载自blog.51cto.com/13550695/2460979