官方解釋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資料不受影響,如...