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

解決Vue使用bus總線時,第一次路由跳轉(zhuǎn)時數(shù)據(jù)沒成功傳遞問題

 更新時間:2020年07月28日 11:14:47   作者:bdlaxx  
這篇文章主要介紹了解決Vue使用bus總線時,第一次路由跳轉(zhuǎn)時數(shù)據(jù)沒成功傳遞問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

bus總線是vue中路由跳轉(zhuǎn)傳遞數(shù)據(jù)的常用方法,適用于傳遞數(shù)據(jù)不多的情況,但是在使用的過程中發(fā)現(xiàn),bus總線在第一次路由跳轉(zhuǎn)的時候總是不能夠成功傳遞需要傳遞的數(shù)據(jù)。檢查bus的配置以及調(diào)用方法,均沒有出錯,錯就錯在沒有理解Vue的生命周期?。。?/p>

我們知道bus的$on的監(jiān)聽?wèi)?yīng)該位于$emit之前,如果在emit之前沒有創(chuàng)建監(jiān)聽事件,那么肯定是得不到需要的數(shù)據(jù)。因此,我通過兩個頁面來了解路由跳轉(zhuǎn)時兩個頁面的生命周期,下面給出其中一個頁面的部分代碼:

 //頁面1
 beforeCreate () {
  console.group('%c%s', 'color:red', 'beforeCreate 創(chuàng)建前狀態(tài)===============組件1》')
 },
 created () {
  console.group('%c%s', 'color:red', 'created 創(chuàng)建完畢狀態(tài)===============組件1》')
 },
 beforeMount () {
  console.group('%c%s', 'color:red', 'beforeMount 掛載前狀態(tài)===============組件1》')
 },
 mounted () {
  console.group('%c%s', 'color:red', 'mounted 掛載狀態(tài)===============組件1》')
 },
 beforeUpdate () {
  console.group('%c%s', 'color:red', 'beforeUpdate 更新前狀態(tài)===============組件1》')
 },
 updated () {
  console.group('%c%s', 'color:red', 'updated 更新狀態(tài)===============組件1》')
 },
 beforeDestroy () {
  console.group('%c%s', 'color:red', 'beforeDestroy 破前狀態(tài)===============組件1》')
 },
 destroyed () {
  console.group('%c%s', 'color:red', 'destroyed 破壞狀態(tài)===============組件1》')
 }

當(dāng)從頁面1跳轉(zhuǎn)到頁面2的時候,控制臺的打印情況如下:

從上圖便可以發(fā)現(xiàn),bus第一次使用無法傳遞的原因:

在頁面1通過$emit方法傳遞數(shù)據(jù)然后跳轉(zhuǎn)路由的時候,其實頁面2的$on監(jiān)聽還沒有建立,因此無法得到數(shù)據(jù)!

基于上述原因,提出的解決辦法如下:

在頁面1的beforeDestroy或者destroyed鉤子函數(shù)中emit數(shù)據(jù),在頁面2的beforeCreate、created或者beforeMount鉤子函數(shù)中建立$on監(jiān)聽事件,然后在頁面2的mounted鉤子函數(shù)中$on得到的數(shù)據(jù)賦值給頁面2的變量中。

//頁面1
 beforeDestroy () {
  bus.$emit('dataFromBus1',this.dataFromBus1);
 },
 //頁面2
  beforeCreate () {
  bus.$on('dataFromBus1',function(url){
   bus.dataFromBus1 = url
  });  
 }, 
 mounted () {
  this.dataFromBus1 = bus.dataFromBus1;  
 },

可以發(fā)現(xiàn),第一次跳轉(zhuǎn)的時候頁面2就能夠得到傳遞的數(shù)據(jù)?。?!

這個坑應(yīng)該是使用bus必須會 踩到的,希望下次使用的時候能夠留個心眼?。?!

補充知識:vue非父子組件傳值(bus)遇到的坑

控制臺可以打印出傳遞過來的值,但就是不會渲染到頁面上那么重點來了?。?!

在A銷毀之前,B組件的beforeCreate ,created,和beforeMount這三個鉤子函數(shù)先觸發(fā),之后才是A組件的銷毀鉤子的觸發(fā),因為總線Bus要求要先有監(jiān)聽在觸發(fā),才能成功監(jiān)聽,所以我們只能在A組件的beforeDestroy或者destroyed這兩個生命周期鉤子中觸發(fā)函數(shù)emit,同理也只能在B組中的beforeCreate,created,和beforeMount這三個鉤子函數(shù)中監(jiān)聽 emit,同理也只能在B組中的beforeCreate ,created,和beforeMount這三個鉤子函數(shù)中監(jiān)聽emit,同理也只能在B組中的beforeCreate,created,和beforeMount這三個鉤子函數(shù)中監(jiān)聽on。

頁面渲染的值如下圖所示

還是有之前重復(fù)觸發(fā)的問題,還是會隨著切換次數(shù)的增加而使監(jiān)聽函數(shù)觸發(fā)的次數(shù)增加,解決這個問題就簡單了。在我們用總線傳值的時候要記得關(guān)閉監(jiān)聽,在B組件中的destroyed鉤子中增加EventBus.$off方法即可,至此就沒問題了。

以上這篇解決Vue使用bus總線時,第一次路由跳轉(zhuǎn)時數(shù)據(jù)沒成功傳遞問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue watch監(jiān)聽取不到this指向的數(shù)問題

    vue watch監(jiān)聽取不到this指向的數(shù)問題

    這篇文章主要介紹了vue watch監(jiān)聽取不到this指向的數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • vue中PC端地址跳轉(zhuǎn)移動端的操作方法

    vue中PC端地址跳轉(zhuǎn)移動端的操作方法

    最近小編接到一個項目pc端和移動端是兩個獨立的項目,兩個項目項目中的內(nèi)容基本相同,鏈接組合的方式都有規(guī)律可循,接到的需求便是在移動端訪問pc端的URL連接時,重定向至移動端對應(yīng)頁面,下面小編給大家分享實現(xiàn)過程,一起看看吧
    2021-11-11
  • 解決vue cli4升級sass-loader(v8)后報錯問題

    解決vue cli4升級sass-loader(v8)后報錯問題

    這篇文章主要介紹了解決vue cli4升級sass-loader(v8)后報錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue如何處理Axios多次請求數(shù)據(jù)顯示問題

    Vue如何處理Axios多次請求數(shù)據(jù)顯示問題

    這篇文章主要介紹了Vue如何處理Axios多次請求數(shù)據(jù)顯示問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue3+ts import引入第三方j(luò)s文件報錯的2種解決方法

    vue3+ts import引入第三方j(luò)s文件報錯的2種解決方法

    這篇文章主要給大家介紹了關(guān)于vue3+ts import引入第三方j(luò)s文件報錯的2種解決方法,在Vue中通常我們引入一個js插件都是使用npm方式下載然后import使用的,需要的朋友可以參考下
    2023-08-08
  • Vue2響應(yīng)式系統(tǒng)介紹

    Vue2響應(yīng)式系統(tǒng)介紹

    這篇文章主要介紹了Vue2響應(yīng)式系統(tǒng),響應(yīng)式系統(tǒng)主要實現(xiàn)某個依賴了數(shù)據(jù)的函數(shù),當(dāng)所依賴的數(shù)據(jù)改變的時候,該函數(shù)要重新執(zhí)行,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • 淺談validator自定義驗證及易錯點

    淺談validator自定義驗證及易錯點

    這篇文章主要介紹了validator自定義驗證及易錯點,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • undefined是否會變?yōu)閚ull原理解析

    undefined是否會變?yōu)閚ull原理解析

    這篇文章主要為大家介紹了undefined是否會變?yōu)閚ull原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • VUE 3D輪播圖封裝實現(xiàn)方法

    VUE 3D輪播圖封裝實現(xiàn)方法

    這篇文章主要為大家詳細介紹了VUE 3D輪播圖封裝實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Vue基于NUXT的SSR詳解

    Vue基于NUXT的SSR詳解

    這篇文章主要介紹了Vue基于NUXT的SSR詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

太白县| 江永县| 巴南区| 井冈山市| 五原县| 禹州市| 依安县| 灵寿县| 镇赉县| 确山县| 富顺县| 封丘县| 邳州市| 七台河市| 宁武县| 马关县| 普陀区| 高陵县| 海南省| 黎川县| 阿鲁科尔沁旗| 资源县| 太仓市| 大英县| 调兵山市| 息烽县| 周至县| 沁源县| 庆云县| 岳池县| 当阳市| 眉山市| 福贡县| 望谟县| 张掖市| 广宗县| 泊头市| 馆陶县| 内江市| 佛山市| 六安市|