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

Vue組件中的data必須是一個function的原因淺析

 更新時間:2018年09月03日 17:10:05   作者:北海之靈  
這篇文章主要介紹了Vue組件中的data必須是一個function的原因淺析,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

組件可以有自己的data,并且data必須是一個function。

在下面這個例子中,data 返回了一個在外部定義的對象。并且這個組件在頁面中使用了3次,點擊+1時出現(xiàn)了如下情況:data中的count屬性影響到了所有實例。

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="../css/bootstrap.css" rel="external nofollow" >
  <style type="text/css">
 #app{
  margin:20px;
 }
  </style>
 </head>
<body>
 <div id='app'>
  <counter></counter>
  <counter></counter>
  <counter></counter>
 </div>
 <template id="tmp1">
  <div>
   <input type="button" value="+1" @click="increment">
   <h1>{{count}}</h1>
  </div>
 </template>
</body>
<script src="../lib/vue.js"></script>
<script>
 var dataObj = {count:0}
 //這是一個計數(shù)器組件,每當(dāng)點擊按鈕,讓data中的count值加1
 Vue.component('counter',{
  template:'#tmp1',
  data:function(){
   return dataObj
  },
  methods:{
   increment(){
    this.count++
   }
  }
 })
 var vm = new Vue({
  el:'#app',
 })
</script>
</html>

而當(dāng)data選項是一個函數(shù)的時候,每個實例可以維護(hù)一份被返回對象的獨立的拷貝,這樣各個實例中的data不會相互影響,是獨立的。

 Vue.component('counter',{
  template:'#tmp1',
  data:function(){
   return {count:0}
  },
  methods:{
   increment(){
    this.count++
   }
  }
 })

  補充:下面看下vue組件中data必須是一個函數(shù)的原因

  vue組件中data值不能為對象,因為對象是引用類型,組件可能會被多個實例同時引用。如果data值為對象,將導(dǎo)致多個實例共享一個對象,其中一個組件改變data屬性值,其它實例也會受到影響。

上面解釋了data不能為對象的原因,這里我們簡單說下data為函數(shù)的原因。data為函數(shù),通過return 返回對象的拷貝,致使每個實例都有自己獨立的對象,實例之間可以互不影響的改變data屬性值。

data為函數(shù)的示例:

data:function(){
  return {
      k1: 'v1',
      k2: 'v2',
    ...
  }
}

總結(jié)

以上所述是小編給大家介紹的Vue組件中的data必須是一個function的原因淺析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue.js中指令Directives詳解

    vue.js中指令Directives詳解

    這篇文章主要為大家詳細(xì)介紹了vue.js中指令Directives,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue中虛擬DOM與Diff算法知識精講

    vue中虛擬DOM與Diff算法知識精講

    這篇文章主要為大家介紹了vue中虛擬DOM與Diff算法知識的圖文精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Vue實現(xiàn)搖一搖功能(兼容ios13.3以上)

    Vue實現(xiàn)搖一搖功能(兼容ios13.3以上)

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)搖一搖功能,兼容ios13.3以上,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • vue-cli3 取消eslint校驗代碼的解決辦法

    vue-cli3 取消eslint校驗代碼的解決辦法

    這篇文章主要介紹了vue-cli3 取消eslint校驗代碼的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 解讀Vue-Router?使用?prams?路由傳參失效

    解讀Vue-Router?使用?prams?路由傳參失效

    這篇文章主要介紹了Vue-Router使用prams路由傳參失效,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 詳解使用jest對vue項目進(jìn)行單元測試

    詳解使用jest對vue項目進(jìn)行單元測試

    這篇文章主要介紹了詳解使用jest對vue項目進(jìn)行單元測試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue子組件如何獲取父組件的內(nèi)容(props屬性)

    vue子組件如何獲取父組件的內(nèi)容(props屬性)

    這篇文章主要介紹了vue子組件獲取父組件的內(nèi)容(props屬性),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vuex的實戰(zhàn)使用詳解

    Vuex的實戰(zhàn)使用詳解

    這篇文章主要介紹了Vuex的實戰(zhàn)使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Vue3新特性Suspense和Teleport應(yīng)用場景分析

    Vue3新特性Suspense和Teleport應(yīng)用場景分析

    本文介紹了Vue2和Vue3中的Suspense用于處理異步請求的加載提示,以及如何在組件間實現(xiàn)動態(tài)加載,同時,Teleport技術(shù)展示了如何在DOM中靈活地控制組件的渲染位置,解決布局問題,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Vue事件處理原理及過程詳解

    Vue事件處理原理及過程詳解

    這篇文章主要介紹了vue事件處理原理及過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03

最新評論