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

詳解vue組件通信的三種方式

 更新時(shí)間:2017年06月30日 11:37:24   作者:命理難說  
本篇文章主要介紹了詳解vue組件通信的三種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1. 第一種方式就是官方推薦的

官方推薦方式

有時(shí)候兩個(gè)組件也需要通信(非父子關(guān)系)。在簡(jiǎn)單的場(chǎng)景下,可以使用一個(gè)空的 Vue 實(shí)例作為中央事件總線。

本質(zhì)是通過派發(fā)事件然后監(jiān)聽事件從而更改值,(父子組件通信也可用這個(gè)方式,但是不同的一點(diǎn)就是父子組件通信的時(shí)候可以不用一個(gè)空的Vue實(shí)例來做中轉(zhuǎn),這種方式我這里就不做演示的了,因?yàn)槲业念}目是非父子通信)

空的Vue實(shí)例 bus

import Vue from 'vue'

const bus = new Vue()
export default bus

組件add

<!--html結(jié)構(gòu)-->
<template>
 <div>
  <p>我是add組件的num:{{num}} </p>
  <button @click='add'>增加</button>
 </div>
</template>
// js
<script>
import bus from '../bus.js'
export default {
 data() {
  return {
   num: ''
  }
 },
 methods: {
  add() {
   if (this.num) {
    this.num++
    bus.$emit('num-change', this.num)
   } else {
    this.num = 1
    bus.$emit('num-change', this.num)
   }
  }
 }
}
</script>

組件sub

<!--html結(jié)構(gòu)-->
<template>
 <div>
  <p>我是sub組件的num:{{num}}</p>
 </div>
</template>
// js
<script>
import bus from '../bus.js'
export default {
 data() {
  return {
   num: ''
  }
 },
 created() {
  bus.$on('num-change', num => {
   this.num = num
  })
 }
}
</script>

2.通過vuex來進(jìn)行狀態(tài)管理

官方狀態(tài)管理

vuex我這里就不詳細(xì)說了,網(wǎng)上教程太多。

3.取巧利用js中的對(duì)象的特性(指針)

Object在內(nèi)存中存儲(chǔ)只是保留指針,所以父組件通過props來給兄弟組件傳遞同一個(gè)對(duì)象,兄弟組件接收的對(duì)象跟父組件的對(duì)象都是指向同一個(gè)內(nèi)存地址,故不管在哪里修改都能保持一致。

上代碼,父組件把同一個(gè)對(duì)象傳遞給add組件和sub組件,那么add組件和sub組件接收到的對(duì)象也是指向父組件app的對(duì)象都是指向同一個(gè)內(nèi)存地址。add組件對(duì)傳入的對(duì)象進(jìn)行+1的操作,sub組件進(jìn)行-1的操作。

父組件 app.vue

<!--html結(jié)構(gòu)-->
<template>
 <div id="app">
  <h1>我是app父組件的newNum:{{share.newNum}}</h1>
  <hr>
  <!--將同一個(gè)對(duì)象同時(shí)傳給兩個(gè)子組件-->
  <addnum :share1='share'></addnum>
  <hr>
  <subnum :share2='share'></subnum>
 </div>
</template>
// js
import addnum from './components/add'
import subnum from './components/sub'

export default {
 data() {
  return {
   share: {
    newNum: 1
   }
  }
 },
 components: {
  addnum, subnum
 }
}

子組件add.vue

<!--html結(jié)構(gòu)-->
<template>
 <div>
  <p>我是add組件的newNum:{{share1.newNum}} </p>
  <button @click='add'>增加</button>
 </div>
</template>
//js
<script>
export default {
 methods: {
  add() {
   this.share1.newNum++
  }
 },
 props: {
  share1: {
   type: Object,
  }
 }
}
</script>

子組件sub.vue

<!--html結(jié)構(gòu)-->
<template>
 <div>
  <p>我是sub組件的newNum:{{share2.newNum}}</p>  
  <button @click='numSub'>減少</button>
 </div>
</template>
// js
<script>
export default {
 methods: {
  numSub() {
   this.share2.newNum--
  }
 },
 props: {
  share2: {
   type: Object,
  }
 }
}
</script>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解van-cell如何使用插槽

    詳解van-cell如何使用插槽

    這篇文章主要為大家介紹了van-cell如何使用插槽詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • vue自動(dòng)化路由的實(shí)現(xiàn)代碼

    vue自動(dòng)化路由的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue自動(dòng)化路由的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue無法讀取HTMLCollection列表的length問題解決

    Vue無法讀取HTMLCollection列表的length問題解決

    這篇文章主要介紹了Vue無法讀取HTMLCollection列表的length問題解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue+Ant?Design進(jìn)度條滑塊與input聯(lián)動(dòng)效果實(shí)現(xiàn)

    vue+Ant?Design進(jìn)度條滑塊與input聯(lián)動(dòng)效果實(shí)現(xiàn)

    最近接到這樣一個(gè)需求滑塊進(jìn)度與輸入框?yàn)橐恢?默認(rèn)值為80,最小不能小于30,最大為100,怎么實(shí)現(xiàn)這個(gè)聯(lián)動(dòng)效果呢,下面小編給大家分享下基于vue+Ant?Design進(jìn)度條滑塊與input聯(lián)動(dòng)效果的實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • Vue3除了keep-alive還有哪些實(shí)現(xiàn)頁面緩存詳解

    Vue3除了keep-alive還有哪些實(shí)現(xiàn)頁面緩存詳解

    Vue3中的keep-alive組件用于緩存頁面,以便在切換頁面時(shí)保留其狀態(tài),下面這篇文章主要給大家介紹了關(guān)于Vue3除了keep-alive還有哪些實(shí)現(xiàn)頁面緩存的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Vue實(shí)現(xiàn)骨架屏的示例代碼

    Vue實(shí)現(xiàn)骨架屏的示例代碼

    骨架屏就是在頁面數(shù)據(jù)尚未加載前先給用戶展示出頁面的大致結(jié)構(gòu)。本文將利用Vue實(shí)現(xiàn)簡(jiǎn)單的骨架屏,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Vue3計(jì)算屬性是如何實(shí)現(xiàn)的

    Vue3計(jì)算屬性是如何實(shí)現(xiàn)的

    這篇文章主要介紹了Vue3計(jì)算屬性是如何實(shí)現(xiàn)的,對(duì)于任何包含響應(yīng)式數(shù)據(jù)的復(fù)雜邏輯,我們都應(yīng)該使用計(jì)算屬性,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-08-08
  • VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟

    VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟

    這篇文章主要給大家介紹了關(guān)于VUE?Element修改el-input和el-select長(zhǎng)度的具體步驟,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • vue實(shí)現(xiàn)組件值的累加

    vue實(shí)現(xiàn)組件值的累加

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)組件值的累加,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Vue?Router?實(shí)現(xiàn)登錄后跳轉(zhuǎn)到之前想要訪問的頁面

    Vue?Router?實(shí)現(xiàn)登錄后跳轉(zhuǎn)到之前想要訪問的頁面

    這篇文章主要介紹了Vue?Router?實(shí)現(xiàn)登錄后跳轉(zhuǎn)到之前相要訪問的頁面,本文僅演示路由跳轉(zhuǎn)和導(dǎo)航守衛(wèi)相關(guān)代碼的實(shí)現(xiàn),不包含具體的權(quán)限驗(yàn)證和登錄請(qǐng)求,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

乌拉特后旗| 昌吉市| 垣曲县| 锡林郭勒盟| 清水县| 镇康县| 江油市| 信宜市| 化德县| 钦州市| 大连市| 桃江县| 台中县| 方正县| 新化县| 黄陵县| 敖汉旗| 信丰县| 凌云县| 台南市| 巨鹿县| 巴东县| 工布江达县| 舒城县| 邵武市| 平邑县| 黔西县| 石屏县| 麦盖提县| 漳平市| 卓尼县| 乌鲁木齐市| 新密市| 万全县| 阜新| 白水县| 庄浪县| 云安县| 邛崃市| 牡丹江市| 翼城县|