我想在让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状态,等等),在开始任何路由之前。
答案 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