React中自己封裝一個(gè)bus總線用于組件傳值

早上好袱耽!小伙伴們咒循!
在react的學(xué)習(xí)中樱蛤,是不是非常愉快,因?yàn)閞eact的社區(qū)化剑鞍,我們可以自己添加許多自己想要的功能昨凡,在Vue中關(guān)于組件傳值,有一個(gè)非常好用的工具叫做bus總線(官方封裝好的)蚁署!組件之間可以用統(tǒng)一的語法去相互傳遞數(shù)據(jù)便脊,而在React中官方并沒有封裝這個(gè)東西!沒關(guān)系光戈,沒有我們可以自己造一個(gè)哪痰。廢話不多說遂赠,直接上代碼。

const event ={}
//就是一個(gè)字符串晌杰,對(duì)應(yīng)一組回調(diào)函數(shù)
//callback就是事件對(duì)象的回調(diào)函數(shù)
export const $on=(eventName,callback)=>{  //eventName就是事件名
    if(!event[eventName]){  //用自定義事件建立一個(gè)數(shù)組
        event[eventName] =[]
    }
    event[eventName].push(callback)
}

export const $emit =(eventName,data)=>{
    if(!event[eventName]) return;
    event[eventName].forEach((cb)=>{  
        //用這個(gè)字符串跷睦,找到存儲(chǔ)回到函數(shù)的數(shù)組,并依次執(zhí)行數(shù)組里的回調(diào)函數(shù)
        cb(data);
    })
}

export const $off=(eventName,callback)=>{
    if(!callback){  //不傳回調(diào)肋演,把所有的這個(gè)事件對(duì)應(yīng)的回調(diào)都清掉
        event[eventName]=null;
    }
    else{  //只清除這個(gè)事件抑诸,這個(gè)回調(diào)函數(shù)

        event[eventName]=event[eventName].filter((cb)=>{
            return cb!==callback
        })
    }
}

接下來我們就可以愉快的用

1. $on去監(jiān)聽

2. $emit去發(fā)送

3. $off去清除。

今天又是混混睡睡的一天爹殊,那么分享就到這里了蜕乡,小伙伴們感受到React的優(yōu)雅了嘛!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梗夸,一起剝皮案震驚了整個(gè)濱河市层玲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌反症,老刑警劉巖辛块,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異铅碍,居然都是意外死亡润绵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門该酗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來授药,“玉大人,你說我怎么就攤上這事呜魄』谶矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵爵嗅,是天一觀的道長娇澎。 經(jīng)常有香客問我,道長睹晒,這世上最難降的妖魔是什么趟庄? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮伪很,結(jié)果婚禮上戚啥,老公的妹妹穿的比我還像新娘。我一直安慰自己锉试,他們只是感情好猫十,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般拖云。 火紅的嫁衣襯著肌膚如雪贷笛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天宙项,我揣著相機(jī)與錄音乏苦,去河邊找鬼。 笑死尤筐,一個(gè)胖子當(dāng)著我的面吹牛汇荐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叔磷,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼拢驾,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼奖磁!你這毒婦竟也來了改基?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤咖为,失蹤者是張志新(化名)和其女友劉穎秕狰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躁染,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸣哀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吞彤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片我衬。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饰恕,靈堂內(nèi)的尸體忽然破棺而出挠羔,到底是詐尸還是另有隱情,我是刑警寧澤埋嵌,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布破加,位于F島的核電站,受9級(jí)特大地震影響雹嗦,放射性物質(zhì)發(fā)生泄漏范舀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一了罪、第九天 我趴在偏房一處隱蔽的房頂上張望锭环。 院中可真熱鬧,春花似錦泊藕、人聲如沸辅辩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汽久。三九已至鹤竭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間景醇,已是汗流浹背臀稚。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留三痰,地道東北人吧寺。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像散劫,于是被迫代替她去往敵國和親稚机。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361