欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Vue的組件中data選項為什么必須是函數(shù)

 更新時間:2020年08月17日 16:05:16   作者:letMeAlone_  
這篇文章主要給大家介紹了關(guān)于Vue的組件中data選項為什么必須是函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

官方解釋

data 必須是函數(shù)

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

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

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

<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>',
 ```
 // 技術(shù)上 data 的確是一個函數(shù)了,因此 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,所以簡單化的理解應(yīng)該是這樣的

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

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

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

function component(d) {

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

總結(jié)

到此這篇關(guān)于詳解Vue的組件中data選項為什么必須是函數(shù)的文章就介紹到這了,更多相關(guān)Vue組件中data選項是函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Vue環(huán)境下利用worker運(yùn)行interval計時器的步驟

    在Vue環(huán)境下利用worker運(yùn)行interval計時器的步驟

    這篇文章主要介紹了在Vue環(huán)境下利用worker運(yùn)行interval計時器的步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 解決webpack-bundle-analyzer的問題大坑

    解決webpack-bundle-analyzer的問題大坑

    這篇文章主要介紹了解決webpack-bundle-analyzer的問題大坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue解析Json數(shù)據(jù)獲取Json里面的多個id問題

    vue解析Json數(shù)據(jù)獲取Json里面的多個id問題

    這篇文章主要介紹了vue解析Json數(shù)據(jù)獲取Json里面的多個id問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    Vue框架的優(yōu)秀設(shè)計和強(qiáng)大的生態(tài)系統(tǒng)成為了越來越多開發(fā)者選擇Vue的原因,在實際項目過程中一個高效的開發(fā)環(huán)境能夠大大提高開發(fā)效率,這篇文章主要給大家介紹了關(guān)于vscode搭建vue環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • vue elementui上傳圖片限制格式、大小和尺寸方式

    vue elementui上傳圖片限制格式、大小和尺寸方式

    這篇文章主要介紹了vue elementui上傳圖片限制格式、大小和尺寸方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue+Element UI+Lumen實現(xiàn)通用表格分頁功能

    Vue+Element UI+Lumen實現(xiàn)通用表格分頁功能

    這篇文章主要介紹了Vue+Element UI+Lumen實現(xiàn)通用表格分頁功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Vue中this.$nextTick()的具體使用

    Vue中this.$nextTick()的具體使用

    本文主要介紹了Vue中this.$nextTick()的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 關(guān)于el-select組件設(shè)置默認(rèn)值的實現(xiàn)方式

    關(guān)于el-select組件設(shè)置默認(rèn)值的實現(xiàn)方式

    這篇文章主要介紹了關(guān)于el-select組件設(shè)置默認(rèn)值的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳細(xì)聊聊Vue中的MVVM模式原理

    詳細(xì)聊聊Vue中的MVVM模式原理

    MVVM旨在利用WPF中的數(shù)據(jù)綁定函數(shù),通過從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進(jìn)視圖層開發(fā)與模式其余部分的分離,這篇文章主要給大家介紹了關(guān)于Vue.js中MVVM的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Vue框架中正確引入JS庫的方法介紹

    Vue框架中正確引入JS庫的方法介紹

    最近在學(xué)習(xí)使用vue框架,在使用中遇到了一個問題,查找相關(guān)資料終于找了正確的姿勢,所以這篇文章主要給大家介紹了關(guān)于在Vue框架中正確引入JS庫的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07

最新評論