亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

官方推薦方式

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

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

空的Vue實例 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中的對象的特性(指針)

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

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

父組件 app.vue

<!--html結(jié)構(gòu)-->
<template>
 <div id="app">
  <h1>我是app父組件的newNum:{{share.newNum}}</h1>
  <hr>
  <!--將同一個對象同時傳給兩個子組件-->
  <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>

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

相關(guān)文章

  • 基于vue.js中關(guān)于下拉框的值默認(rèn)及綁定問題

    基于vue.js中關(guān)于下拉框的值默認(rèn)及綁定問題

    今天小編就為大家分享一篇基于vue.js中關(guān)于下拉框的值默認(rèn)及綁定問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 使用 vue-i18n 切換中英文效果

    使用 vue-i18n 切換中英文效果

    這篇文章主要介紹了使用 vue-i18n 切換中英文效果,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • vue3全局組件自動注冊功能實現(xiàn)

    vue3全局組件自動注冊功能實現(xiàn)

    本文主要講述vue3的全局公共組件的自動注冊功能,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-02-02
  • Vue中組件的傳值方式詳解

    Vue中組件的傳值方式詳解

    這篇文章主要介紹了Vue中組件的傳值方式詳解,Vue中最常見的組件之間的通信方式有12種,今天我們會詳細(xì)講解父傳子props方式和子傳父emit以及非父子組件傳值,需要的朋友可以參考下
    2023-08-08
  • Vue.js響應(yīng)式數(shù)據(jù)的簡單實現(xiàn)方法(一看就會)

    Vue.js響應(yīng)式數(shù)據(jù)的簡單實現(xiàn)方法(一看就會)

    Vue最巧妙的特性之一是其響應(yīng)式系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于Vue.js響應(yīng)式數(shù)據(jù)的簡單實現(xiàn)方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 使用vue指令解決文本的溢出提示的問題

    使用vue指令解決文本的溢出提示的問題

    在我們項目開發(fā)中,經(jīng)常會有超長文本溢出提示,未溢出則不提示的場景,接下來我們將一步步用vue指令實現(xiàn)這個需求,文中有詳細(xì)的代碼講解,感興趣的朋友跟著小編一起來看看吧
    2023-08-08
  • vue3:setup的兩個注意點詳解

    vue3:setup的兩個注意點詳解

    這篇文章主要介紹了vue3.0中setup的兩個注意點,本文通過兩種用法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • .eslintrc配置目錄及配置項的使用方式

    .eslintrc配置目錄及配置項的使用方式

    這篇文章主要介紹了.eslintrc配置目錄及配置項的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue實現(xiàn)隨機(jī)驗證碼功能

    Vue實現(xiàn)隨機(jī)驗證碼功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)隨機(jī)驗證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue如何使用element ui表格el-table-column在里面做判斷

    vue如何使用element ui表格el-table-column在里面做判斷

    這篇文章主要介紹了vue如何使用element ui表格el-table-column在里面做判斷問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論