在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 如何解決vue個組件之間的數(shù)據(jù)依賴問題?

如何解決vue個組件之間的數(shù)據(jù)依賴問題?

問題描述:
A組件中接口返回的有登錄信息,在B組件中需要根據(jù)這個登陸信息去進行其他的操作

我現(xiàn)在的做法是把A組件中的登錄信息存在一個全局的變量中,然后在B組件mounted中通過getList函數(shù)去獲取這個全局變量。

現(xiàn)在有個問題就是,在B組件渲染完成之后A組件中的接口還沒有請求成功,這時候就取不到返回的登錄信息,等A組件接口請求成功并將值賦值給全局變量后,B組件不會再去執(zhí)行g(shù)etList這個方法所以視圖還是沒法渲染。

我自己想到一個解決辦法就是給B組件中的getList方法加一個定時器延遲執(zhí)行,也可以達到預期的效果,但總是感覺做法不是很合適,在這里請教一下大佬們有沒有什么好的解決辦法?

說明
1.項目沒有用到vuex
2.之前用到過eventbus進行組件通信,但是因為B組件是一個公用組件,多個不同的路由會跳到這個組件,當路由切換的時候數(shù)據(jù)更新不上,所有最后用的就是定義全局變量的方式來傳值

回答
編輯回答
蔚藍色

其實這種情況用vuex挺好的,可以完美解決你的需求,用上也不復雜
store中定義模塊
用的時候

import { mapGetters } from 'vuex'
computed: {
  ...mapGetters([
    'name'
  ])
}

<div>{{name}}</div>
2017年5月25日 16:54
編輯回答
毀了心

如果A組件是B組件的子組件,用emit處理。
如果是同級的組件,從A組件跳轉(zhuǎn)到B組件,為什么不等登錄成功之后跳轉(zhuǎn)呢?
如果沒有頁面跳轉(zhuǎn),可考慮做一個自定義事件,或者用vuex

2017年11月14日 04:05
編輯回答
執(zhí)念

這種等有數(shù)據(jù)后,觸發(fā)另一個組件的方法,是eventBus去做的。
在B組件里bus.$on監(jiān)聽,在A組件里bus.$emit觸發(fā)事件。

2017年1月12日 12:06