亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

汤阴县| 吐鲁番市| 宜丰县| 泾川县| 临洮县| 江安县| 瑞金市| 满城县| 姚安县| 石狮市| 永年县| 兴山县| 平遥县| 资中县| 大理市| 汽车| 建阳市| 乡城县| 邮箱| 梅河口市| 克东县| 苍南县| 太仓市| 沈丘县| 兴义市| 桃江县| 济源市| 乡宁县| 北辰区| 南部县| 诸城市| 鹤壁市| 定兴县| 临高县| 封开县| 孙吴县| 北碚区| 深州市| 内乡县| 渭源县| 新巴尔虎右旗|