Vue组件data选项为什么必须是个函数而Vue的根实例则没有此限制?

Vue组件data选项为什么必须是个函数而Vue的根实例则没有此限制?

基本知识了解

在解答这个问题之前,需要了解js的数据类型,即基本数据类型和引用数据类型的差异。具体可阅读这篇文章

组件data为函数缘由

在创建或注册模板的时候传入一个 data 属性作为用来绑定的数据。但是在组件中,data必须是一个函数,因为每一个 vue 组件都是一个 vue 实例,通过 new Vue() 实例化,引用同一个对象,如果 data 直接是一个对象的话,那么一旦修改其中一个组件的数据,其他组件相同数据就会被改变,而 data 是函数的话,每个 vue 组件的 data 都因为函数有了自己的作用域,互不干扰。

Vue根实例data为JSON缘由

Vue根实例没有此限制的原因是在一个Vue项目中,根实例不会出现被复用的情况,因此不必要求data一定是一个返回对象的函数

猜你喜欢

转载自blog.csdn.net/weixin_44116302/article/details/104072272