首先说 data在不同状态下到底是对象或function

  1. 在一个普通的vue实例中 data是一个对象
new Vue( {
 
    data : {
 
        title : ''object"
     
    }
 
} );
  1. 在一个普通的vue实例中 data是一个function
Vue.component( 'component-name', Vue.extend( {
     
    data : function() {
     
        return {
     
            title : 'abc'
     
        };
     
    }
 
} ) );

为仕么要在组件中写成function

组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象。(也就是说写成函数,会有函数作用域的概念 ,是私有函数,只作用到当前组件中)

参考自 https://cn.vuejs.org/v2/api/?#data

Logo

前往低代码交流专区

更多推荐