私のアプリケーションのmain.js
では、私のAPIから企業を取得し、最初のものを選択するアクションをディスパッチします。このアクションは毎回送出され、ここでは失敗しないようです。私が選択した会社に所属するキャンペーンを取得する必要があるので、私はVUE-リソースをマウント上でこれを行う別のビューでVuex計算されたプロパティは、ルートが変更されてから変更された場合にのみ更新されます。
new Vue({
el: '#app',
store,
router,
render: h => h(App),
created: function() {
this.$store.dispatch('getCompaniesAndSelectFirst');
}
})
。
mounted: function() {
if (this.selectedCompanyId) {
this.$http.get('Campaigns', {params: {companyId: this.selectedCompanyId}}).then(response => {
// success callback
this.numbersTableData = response.body;
}, response => {
// error callback
});
}
}
selectedCompanyId
はVuexで選択した会社のIDを返し、私の計算されたプロパティです。
selectedCompanyId: function() {
return this.$store.getters.selectedCompanyId;
}
問題は、これがロードされる最初のビューである場合selectedCompanyId
は、この時点で定義されていないです。
ページを更新すると、まだselectedCompanyId
は未定義であり、取得要求は失敗します。
このビューでアプリケーションを開くと、selectedCompanyId
は未定義で、取得要求は失敗しますが、別のビューにルーティングして戻った場合、selectedCompanyId
がロードされ、要求は成功します。
別のビューでアプリケーションを開き、ビューselectedCompanyId
へのルーティングが定義され、get要求が成功した場合。
私が理解しているように、これは、企業を取得し、最初のものを選択するリクエストが完了するまでに時間がかかるためです。
どうすればこの問題を解決できますか?私がやろうとしていることをする良い方法はありますか?
データのロード状態に基づいてルートをガードする必要があります。 https://router.vuejs.org/en/advanced/data-fetching.html – Phil
@Philどうすればいいですか?状態がロードされていない場合、私が行うことができるのはルートではなく、ロードされるまでどのようにチェックを続けますか? – Suren
リンクした文書を読んだことがありますか? _「移動前にフェッチする」_ – Phil