最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

官方解釋

data 必須是函數(shù)

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

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

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

<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 的確是一個(gè)函數(shù)了,因此 Vue 不會(huì)警告,
 // 但是我們卻給每個(gè)組件實(shí)例返回了同一個(gè)對象的引用
 ```
 data: function () {
 return data
 }
})
new Vue({
 el: '#example-2'
})

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

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

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

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

比如

//以下代碼中,組件中的count和Vue中的count是一樣的變量名,但是在組件中只會(huì)顯示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ù)的時(shí)候,我們是調(diào)用的component的私有變量data
//如果我們不以函數(shù)的形式處理又會(huì)如何呢?
var component=function(){
//不存在私有的data屬性
}
component.propotype.data= {count:0}
//此時(shí),data不作為私有變量,就會(huì)有暴露的風(fēng)險(xiǎn),而且,它指向的是{count:0}的引用,所以當(dāng)重復(fù)創(chuàng)建組件的時(shí)候,component的data都指向了同一個(gè)引用。因此會(huì)相互影響。

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

function component(d) {

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

總結(jié)

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

相關(guān)文章

  • ElementUI動(dòng)態(tài)渲染el-table的實(shí)現(xiàn)過程

    ElementUI動(dòng)態(tài)渲染el-table的實(shí)現(xiàn)過程

    在前端開發(fā)中,表格是不可或缺的一部分,無論是數(shù)據(jù)展示、數(shù)據(jù)錄入,還是數(shù)據(jù)分析,表格都扮演著重要的角色,而在Vue.js生態(tài)系統(tǒng)中,ElementUI提供了一個(gè)強(qiáng)大且靈活的表格組件——el-table,本文將帶你深入了解如何使用ElementUI動(dòng)態(tài)渲染el-table,并詳細(xì)探討其原理及實(shí)現(xiàn)過程
    2024-08-08
  • Vue組件傳值方式(props屬性,父到子,子到父,兄弟傳值)

    Vue組件傳值方式(props屬性,父到子,子到父,兄弟傳值)

    這篇文章主要介紹了Vue組件傳值方式(props屬性,父到子,子到父,兄弟傳值),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • VUE餓了么樹形控件添加增刪改功能的示例代碼

    VUE餓了么樹形控件添加增刪改功能的示例代碼

    本篇文章主要介紹了VUE餓了么樹形控件添加增刪改功能的示例代碼,非常具有實(shí)用價(jià)值,有興趣的可以了解一下
    2017-10-10
  • element?el-tooltip實(shí)現(xiàn)自定義修改樣式

    element?el-tooltip實(shí)現(xiàn)自定義修改樣式

    本文主要介紹了element?el-tooltip實(shí)現(xiàn)自定義修改樣式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue中實(shí)現(xiàn)v-for循環(huán)遍歷圖片的方法

    Vue中實(shí)現(xiàn)v-for循環(huán)遍歷圖片的方法

    這篇文章主要介紹了Vue中實(shí)現(xiàn)v-for循環(huán)遍歷圖片的方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue如何使用本地JSON文件

    Vue如何使用本地JSON文件

    這篇文章主要介紹了Vue如何使用本地JSON文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue中$refs的用法詳解

    Vue中$refs的用法詳解

    這篇文章主要介紹了Vue中$refs的用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-06-06
  • vue 2.0 購物車小球拋物線的示例代碼

    vue 2.0 購物車小球拋物線的示例代碼

    本篇文章主要介紹了vue 2.0 購物車小球拋物線的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • vuex + keep-alive實(shí)現(xiàn)tab標(biāo)簽頁面緩存功能

    vuex + keep-alive實(shí)現(xiàn)tab標(biāo)簽頁面緩存功能

    這篇文章主要介紹了vuex + keep-alive實(shí)現(xiàn)tab標(biāo)簽頁面緩存功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Vue利用ref屬性更改css樣式的操作方法

    Vue利用ref屬性更改css樣式的操作方法

    在Vue.js的應(yīng)用開發(fā)中,我們經(jīng)常會(huì)遇到需要?jiǎng)討B(tài)修改DOM元素樣式的情況,Vue提供了多種方式來實(shí)現(xiàn)這一目標(biāo),其中ref是一個(gè)非常有用且靈活的工具,本文將深入探討如何在Vue項(xiàng)目中利用ref屬性來更改CSS樣式,并通過多個(gè)實(shí)例演示其具體用法,需要的朋友可以參考下
    2024-10-10

最新評(píng)論

甘泉县| 平塘县| 蕉岭县| 若羌县| 黄冈市| 新邵县| 新龙县| 醴陵市| 哈尔滨市| 班玛县| 莎车县| 远安县| 柳河县| 绥德县| 象州县| 岳阳县| 银川市| 武冈市| 且末县| 克什克腾旗| 孟村| 来宾市| 二连浩特市| 海门市| 莱西市| 昂仁县| 镇原县| 隆尧县| 云林县| 阿勒泰市| 舟山市| 合江县| 屏东市| 南丹县| 津市市| 郎溪县| 白城市| 南木林县| 临泽县| 东兰县| 丰原市|