国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

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

2024-05-06 15:15:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

官方推薦方式

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

本質(zhì)是通過(guò)派發(fā)事件然后監(jiān)聽(tīng)事件從而更改值,(父子組件通信也可用這個(gè)方式,但是不同的一點(diǎn)就是父子組件通信的時(shí)候可以不用一個(gè)空的Vue實(shí)例來(lái)做中轉(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.通過(guò)vuex來(lái)進(jìn)行狀態(tài)管理

官方狀態(tài)管理

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

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

Object在內(nèi)存中存儲(chǔ)只是保留指針,所以父組件通過(guò)props來(lái)給兄弟組件傳遞同一個(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>
// jsimport addnum from './components/add'import subnum from './components/sub'export default { data() {  return {   share: {    newNum: 1   }  } }, components: {  addnum, subnum }}

子組件add.vue

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 潼南县| 阜康市| 柳江县| 云南省| 旺苍县| 晋城| 鄂托克前旗| 孝义市| 恩施市| 牙克石市| 资源县| 西昌市| 湟中县| 清苑县| 大同县| 金乡县| 惠来县| 平邑县| 威宁| 丹江口市| 门源| 广州市| 东辽县| 漳浦县| 乌兰察布市| 古丈县| 巨鹿县| 太仆寺旗| 成武县| 宁津县| 凤阳县| 平潭县| 苏州市| 商丘市| 方城县| 伊春市| 巫溪县| 中卫市| 长春市| 吉安县| 南开区|