Vue中data為何以函式形式返回

2022-01-10 11:00:27 字數 842 閱讀 9633

在使用vue構建元件化應用時,每個元件的data屬性都是以函式形式返回的,這主要是在元件化實現的時候,每個例項可以維護乙份被返回物件的獨立的拷貝,而不是共享同乙個物件的引用。

在乙個vue簡單例項中,也就是不使用元件化實現的時候,data可以是乙個物件,因為本身也只有乙個例項,就不存在多個例項共享的問題。

如果是使用vue的元件化例項,那麼data屬性就必須以函式的形式返回,如果不使用函式的形式返回,可能會出現一些意料之外的情況,比如下面的例子中,按鈕元件是復用的,在點選第乙個按鈕時本身應該只有第乙個按鈕+1,但是所有的按鈕都跟隨+1。請注意,在此處仍然是使用函式的形式返回,這是因為如果在元件化實現中如果不使用函式的形式返回vue會直接報錯,但是實現的效果是相同的,雖然是以函式的形式返回,但是返回的物件中count屬性都是指向了對於counter物件的引用,本質上依舊是多個元件例項共享乙個物件,實際效果與以物件的形式直接返回相同。

所以為了規避這種現象,在元件化實現的時候,data屬性必須以函式的形式返回,以便每個例項可以維護乙份被返回物件的獨立的拷貝,而不是共享同乙個物件的引用。

vue元件中data是個函式

當我們const vm new vue 用習慣了,data是乙個物件,可到了vue元件 vue.component cp data return info hello vue 因為vue.component是乙個建構函式,data資料是放在vue.component.prototype裡的所以如果是...

vue中data返回乙個函式

function person var obj1 person var obj2 person obj1.name b console.log obj1 console.log obj2 a function person var obj1 person var obj2 person obj1.n...

vue元件中data為什麼是個函式

在vue的開發中,我們在元件中採用函式這種格式 data 在vue例項中採用的是物件這種格式 data 那麼為什麼要在元件中採用函式的方式呢?首先元件是多次使用的,也就是復用。當我們多次呼叫乙個元件,肯定不希望元件中資料是相互聯通的。所以在此使用函式的方式return乙個物件,這樣每次呼叫元件返回的...