Компоненты Vuejs ждут инициализации
Чтобы дать некоторый контекст, у меня есть приложениеvuejs , использующееvue-router иvuex .
app.vueзагрузочный код
foo.vueнекоторый компонент, который отображается на маршруте/foo
bar.vueнекоторый компонент, который отображается на маршруте/bar
При запуске приложения мне нужно синхронизировать Чтение состояния из хранилища устройства. Поскольку это асинхронная операция, она оборачивается на vue-action и вызывается на app.vue.
При входе в /foo маршрут к моменту монтирования компонента $store еще не обновлен из хранилища устройства
Как все компоненты могут гарантировать, что инициализация произведена до их монтирования?
1 ответ:
Что я делаю в этих ситуациях, так это использую
v-ifна вашем корневом элементе<router-view>для отображения только тогда, когда данные, которые вы ожидаете там заполнить, например<script> export default { computed: { hasLoadedData() { // Or whatever criteria you decide on to represent that the // app state has finished loading. return this.$store.state.something !== null; } } } </script> <template> <div id="app"> <router-view v-if="hasLoadedData" /> <p v-else>Loading...</p> </div> </template>
Comments