组件中 data 为什么是⼀个函数?
为什么组件中的data必须是一个函数,然后return一个对象,而new Vue实例里,data可以直接是一个对象?
//data
data(){
return {
message:'子组件',
childName:this.name
}
}
//new Vue
new Vue({
el:'#app',
router,
template:'</app>',
components:{App}
})
用为组件是用来复用的,且在JS里对象是引用关系。
如果组件中data是一个对象,那么这样作用域没有隔离性,子组件中的data属性值会相互影响,如果组件中data选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的data属性值不会互相影响;
而new Vue的实例,是不会被复用的,因此不存在引用对象的问题。