中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue組件中data選項必須是函數的原因是什么

發布時間:2020-08-18 11:57:35 來源:億速云 閱讀:287 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Vue組件中data選項必須是函數的原因是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

官方解釋

data 必須是函數

構造 Vue 實例時傳入的各種選項大多數都可以在組件里使用。只有一個例外:data 必須是函數。實際上,如果你這么做:

Vue.component('my-component', {
 template: '<span>{{ message }}</span>',
 data: {
 message: 'hello'
 }
})

那么 Vue 會停止運行,并在控制臺發出警告,告訴你在組件實例中 data 必須是一個函數。但理解這種規則為何存在也是很有益處的,所以讓我們先作個弊:

<div id="example-2">
 <simple-counter></simple-counter>
 <simple-counter></simple-counter>
 <simple-counter></simple-counter>
</div>
var data = { counter: 0 }
Vue.component('simple-counter', {
 template: '<button v-on:click="counter += 1">{{ counter }}</button>',
 ```
 // 技術上 data 的確是一個函數了,因此 Vue 不會警告,
 // 但是我們卻給每個組件實例返回了同一個對象的引用
 ```
 data: function () {
 return data
 }
})
new Vue({
 el: '#example-2'
})

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

Vue.component('xxx',{
template:'{{counter}}',
data:function(){
return counter=0;
}
})

Vue在注冊到全局/局部并生成實例時,它是具有自己的作用域的,也就是說

在template 字符串模板中如果存在一個變量名與VUE實例的變量名一致的時候,這個變量只會是組件中的變量,而不會是VUE的全局變量

比如

//以下代碼中,組件中的count和Vue中的count是一樣的變量名,但是在組件中只會顯示0而不是2
Vue.component('simple-counter',{
    template:'<button>{{count}}</button>',
    data:function(){
     return count=0;

    }

   });
   vm=new Vue({
    el:'#example-2',
    data:{
     count:2

    }

   })

以上代碼從原型鏈上理解

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

var component=function(){
this.data=this.data();//存在私有的data屬性
}

component.propotype.data=function(){
return {count:0}
}
//當我們在template中使用數據的時候,我們是調用的component的私有變量data
//如果我們不以函數的形式處理又會如何呢?
var component=function(){
//不存在私有的data屬性
}
component.propotype.data= {count:0}
//此時,data不作為私有變量,就會有暴露的風險,而且,它指向的是{count:0}的引用,所以當重復創建組件的時候,component的data都指向了同一個引用。因此會相互影響。

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

function component(d) {

    this.data = d;
   }
var com = new component({
    count: 1
   });
   var com1 = new component({
    count: 1
   });    

關于Vue組件中data選項必須是函數的原因是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

思南县| 霍州市| 冀州市| 玛沁县| 台安县| 张家口市| 赞皇县| 杂多县| 久治县| 广州市| 金乡县| 扎赉特旗| 刚察县| 浦东新区| 玛纳斯县| 辰溪县| 英吉沙县| 泰和县| 综艺| 平定县| 仙居县| 萨迦县| 台中市| 丹阳市| 景德镇市| 孝感市| 咸宁市| 宜良县| 墨玉县| 和平区| 麦盖提县| 宜宾县| 丹棱县| 大港区| 西和县| 田东县| 梅州市| 青阳县| 镇远县| 夏津县| 小金县|