VueJS在路由/安装组件之前获取AJAX数据

时间:2020-06-08 13:13:19

标签: vue.js vuex vue-router

我想在让VueJS进行任何路由/安装之前初始化一些基本数据。

现在,我了解了全局导航保护router.beforeEach。但是它不仅会在初始加载(页面加载)时触发,还会在触发的每条路由上触发。现在,我可以放入某种if-statement来让代码只运行一次,但这不是解决此问题的首选方式:

// pseudo:
router.beforeEach((to, from, next) => {
    if (state.initialized === false) {
        await store.dispatch(init)
    }

    // the rest of my routing guard logic....
})

我宁愿每次都不要运行if语句(知道它只会一次为true,之后永远为false)。

有没有一种正式的方法可以让(ajax)代码仅一次运行,在vue初始化之后(因此我可以访问vuex状态,等等),在开始任何路由之前。

1 个答案:

答案 0 :(得分:1)

在安装根Vue实例之前,您可以轻松地执行 异步任务。

例如

Spacer

最好在加载时在// main.js import Vue from 'vue' import store from 'path/to/your/store' import router from 'path/to/your/router' import App from './App.vue' store.dispatch('init').then(() => { new Vue({ store, router, render: h => h(App) }).$mount('#app') }) 中显示一些内容,例如

index.html