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

vue之bus總線的簡單使用解讀

 更新時(shí)間:2022年12月07日 15:01:33   作者:牛先森家的牛奶  
這篇文章主要介紹了vue之bus總線的簡單使用解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue bus總線的使用

場景描述

A組件中包括B,C組件,而B組件中包括D組件,這時(shí)如果D組件想要在A組件中觸發(fā)C組件的方法怎么辦呢?

當(dāng)然方案是有的,用狀態(tài)管理vuex可以,用$emit傳遞也可以,但是我想試著用的是bus總線的方式;

如下所示

D組件中觸發(fā)bus的emit ,然后在A組件中用bus總線的on來觸發(fā)方法;

D組件中

dataLoad(){
? ?console.log('加載完觸發(fā)事件');
? ?this.$bus.$emit('itemDataLoad')?
? ?// this.$bus.$emit('事件名稱', 參數(shù)) // 第二個(gè)可以為參數(shù)
},

A組件中

?mounted() {
? ? // 監(jiān)聽item中數(shù)據(jù)加載完
? ? this.$bus.$on('itemDataLoad', () => {
? ? ? console.log('數(shù)據(jù)加載完');
? ? })
? ? // this.$bus.$on('事件名稱', 回調(diào)函數(shù)(參數(shù)))
? },

當(dāng)然在A組件中通過 this.$refs 的方式就可以觸發(fā)C組件中的事件等

還有一步驟是 $bus 默認(rèn)是不存在的啊,打印試試this.$bus為undefined??;

別急,在main.js中加上$bus;

// bus總線 vue實(shí)例
Vue.prototype.$bus = new Vue()

當(dāng)然可以在生命周期中移除bus總線;

this.$bus.$off();

記錄封裝的防抖函數(shù)

// 防抖函數(shù)
? debounce: function (fun, delay) {
? ? let timer = null
? ? // 接收調(diào)用函數(shù)時(shí)傳入的參數(shù)的值 ...args 可多個(gè)
? ? return function (...args) {
? ? ? if (tiemr) return
? ? ? timer = setTimeout(() => {
? ? ? ? fun.apply(this, args)
? ? ? }, delay);
? ? }
? }

const refresh = debounce(xxx, 500)

refresh('參數(shù)1', '參數(shù)2', '參數(shù)3')

bus總線的原理解析

關(guān)于官方介紹 從 Vue 1.x 遷移 — Vue.js

 在官方文檔中對bus總線的介紹是使用,但是明確指出了復(fù)雜情況推薦使用vuex實(shí)現(xiàn)非父子組件直接的傳值,bus總線應(yīng)用在簡單的項(xiàng)目

1.怎么理解bus總線

bus總線就是一個(gè)中間組件,觸發(fā)事件,觸發(fā)中間組件,監(jiān)聽中間組件的變化

2.bus組件存在的條件和注冊

  • 1.所有組件都可以訪問
  • 2.可以使用$emit,$on,$off

在項(xiàng)目過程中要滿足這兩點(diǎn)需求

1.所有組件都可訪問

在vue的項(xiàng)目中,要所有組件都可以訪問,那么一定在vue進(jìn)行實(shí)例化之前就準(zhǔn)備好,就是下圖紅色部分

2.可以使用$emit,$on,$off

有$emit,$on,$off的一定是vue的實(shí)例對象vc,或者vueComponent的實(shí)例對象vm

掛載到哪都可以訪問?必然是原型上

vue.prototype.$bus = vue的實(shí)例對象/vueComponent的實(shí)例對象

第一種:

Vue.prototype.$bus = vueComponent的實(shí)例對象(所有的vueComponent的實(shí)例對象都是(Vue.extentd構(gòu)造的)

第二種:

在生命周期創(chuàng)建之前 Vue.prototype.$bus = vue的實(shí)例對象

第三種:

利用插件進(jìn)行掛載

安裝 - npm install vue-bus

注冊使用:

import VueBus from 'vue-bus';
 
Vue.use(VueBus)

3.使用 

觸發(fā)事件

this.$bus.$emit('事件名', 值)

監(jiān)聽事件

create() {
  this.$bus.$on('事件名', (值) = > {
  })
}

銷毀事件

this.$bus.$off('事件名')

在理解bus總線的前提,是需要理解,為什么寫在vue的原型上就可以訪問?可以自行思考一下,涉及了一些vue的原理

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue 不使用select實(shí)現(xiàn)下拉框功能(推薦)

    vue 不使用select實(shí)現(xiàn)下拉框功能(推薦)

    這篇文章主要介紹了vue 不使用select實(shí)現(xiàn)下拉框功能,在文章給大家提到了vue select 組件的使用與禁用,需要的朋友可以參考下
    2018-05-05
  • Element?UI安裝全過程

    Element?UI安裝全過程

    element?ui?就是基于vue的一個(gè)ui框架,該框架基于vue開發(fā)了很多相關(guān)組件,方便我們快速開發(fā)頁面,餓了么前端團(tuán)隊(duì)基于vue進(jìn)行開發(fā)并且進(jìn)行了開源?element?ui?中提供全部都是封裝好組件,本文給大家介紹Element?UI安裝全過程,感興趣的朋友一起看看吧
    2024-01-01
  • vue彈窗組件的實(shí)現(xiàn)示例代碼

    vue彈窗組件的實(shí)現(xiàn)示例代碼

    這篇文章主要介紹了vue彈窗組件的實(shí)現(xiàn)示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue使用mint-ui實(shí)現(xiàn)下拉刷新和無限滾動(dòng)的示例代碼

    vue使用mint-ui實(shí)現(xiàn)下拉刷新和無限滾動(dòng)的示例代碼

    本篇文章主要介紹了vue使用mint-ui實(shí)現(xiàn)下拉刷新和無限滾動(dòng)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • vue.js單頁面應(yīng)用實(shí)例的簡單實(shí)現(xiàn)

    vue.js單頁面應(yīng)用實(shí)例的簡單實(shí)現(xiàn)

    本篇文章主要介紹了vue.js單頁面應(yīng)用實(shí)例的簡單實(shí)現(xiàn),使用單頁應(yīng)用,沒有頁面切換,就沒有白屏阻塞,可以大大提高 H5 的性能,達(dá)到接近原生的流暢體驗(yàn)。
    2017-04-04
  • Vue+mui實(shí)現(xiàn)圖片的本地緩存示例代碼

    Vue+mui實(shí)現(xiàn)圖片的本地緩存示例代碼

    這篇文章主要介紹了Vue+mui實(shí)現(xiàn)圖片的本地緩存的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • Vue.js每天必學(xué)之Class與樣式綁定

    Vue.js每天必學(xué)之Class與樣式綁定

    這篇文章主要為大家詳細(xì)介紹了Vue.js的Class與樣式綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue3 element plus中el-radio選中之后再次點(diǎn)擊取消選中問題

    vue3 element plus中el-radio選中之后再次點(diǎn)擊取消選中問題

    這篇文章主要介紹了vue3 element plus中el-radio選中之后再次點(diǎn)擊取消選中問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue引入jquery實(shí)現(xiàn)平滑滾動(dòng)到指定位置

    Vue引入jquery實(shí)現(xiàn)平滑滾動(dòng)到指定位置

    這篇文章主要介紹了Vue引入jquery實(shí)現(xiàn)平滑滾動(dòng)到指定位置的效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • Vue之vue.$set()方法源碼案例詳解

    Vue之vue.$set()方法源碼案例詳解

    這篇文章主要介紹了Vue之vue.$set()方法源碼案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論