Vue元件中data選項為什麼必須是函式

2021-08-09 22:39:27 字數 1694 閱讀 3988

官方解釋

data 必須是函式

構造 vue 例項時傳入的各種選項大多數都可以在元件裡使用。只有乙個例外:data 必須是函式。實際上,如果你這麼做:

vue.component('my-component', }

span>',

data:

})

那麼 vue 會停止執行,並在控制台發出警告,告訴你在元件例項中 data 必須是乙個函式。但理解這種規則為何存在也是很有益處的,所以讓我們先作個弊:

"example-2"

>

<******-counter

>>

<******-counter

>>

<******-counter

>>

vardata

= vue.component('******-counter', }',

``` // 技術上 data 的確是乙個函式了,因此 vue 不會警告,

// 但是我們卻給每個元件例項返回了同乙個物件的引用

```data: function ()

})new vue()

**********===以下為個人理解,如果有誤,請指出,謝謝指教

vue.component('***',}',

data:function

()})

vue在註冊到全域性/區域性並生成例項時,它是具有自己的作用域的,也就是說

在template 字串模板中如果存在乙個變數名與vue例項的變數名一致的時候,這個變數只會是元件中的變數,而不會是vue的全域性變數

比如

//以下**中,元件中的count和vue中的count是一樣的變數名,但是在元件中只會顯示0而不是2

vue.component('******-counter',}',

data:function

() });

vm=new vue(

})

以上**從原型鏈上理解

var component=function

(){}//為了讓元件有自己的作用域,它必須包含私有變數data,所以簡單化的理解應該是這樣的

var component=function

()component.propotype.data=function()}

//當我們在template中使用資料的時候,我們是呼叫的component的私有變數data

//如果我們不以函式的形式處理又會如何呢?

var component=function

()component.propotype.data=

//此時,data不作為私有變數,就會有暴露的風險,而且,它指向的是的引用,所以當重複建立元件的時候,component的data都指向了同乙個引用。因此會相互影響。

如果不以原型鏈的形式處理,也可以不傳入函式

function

component

(d)

var com = new component();

var com1 = new component();

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

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

Vue元件中data為什麼需要是乙個函式

關於vue元件中元件內部資料繫結通過data 進行 data不是乙個物件型別,需要是乙個函式型別,如果傳入非函式型別會報錯 乙個小例子 對於obj型別,如果在 內部返回或者引用外部的obj,由於引用的是位址,會指向同乙個物件,所以如果obj定義在for迴圈外部最終結果,均為 即指向同乙個位址 let...

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

元件是可復用的vue例項,乙個元件被建立好之後,就可能被用在各個地方,而元件不管被復用了多少次,元件中的data資料都應該是相互隔離,互不影響的,基於這一理念,元件每復用一次,data資料就應該被複製一次,之後,當某一處復用的地方元件內data資料被改變時,其他復用地方元件的data資料不受影響,如...