как запустить скрипт запуска до router.beforeEach - PullRequest
0 голосов
/ 14 апреля 2019

в основном у меня есть следующая функция инициации:

new Vue({
    el: "#app",
    render: h => h(App),
    store,
    router,
    mounted() {
        this.startUp();
    },
    methods: {
        startUp() {
            store.dispatch('auth/startUp')
                .catch(err => console.log(err));
        }
    },
});

Проблема в том, что startUp инициируется после router.beforeEach((to, from, next). В пределах beforeEach каждый мне нужно проверить:

  1. завершил ли пользователь свою настройку, если ему были доступны не только определенные маршруты. Если пользователь получил доступ к неправильному маршруту, он должен быть перенаправлен на правильный маршрут в соответствии с настройкой.
  2. в случае доступа пользователя к защищенному пути - перевести пользователя на домашнюю страницу.

Скрипт запуска должен обновить состояние пользователя, если пользователь решит обновить страницу. После загрузки состояние управляется с помощью Vuex.

Я определяю свои маршруты в main.js. store.state.auth.user пусто, потому что конечная точка запуска заканчивается после router.beforeEach((to, from, next).

// configure router
const router = new VueRouter({
    routes, // short for routes: routes
    linkExactActiveClass: "nav-item active"
});

router.beforeEach((to, from, next) => {
    if (store.state.auth.user && store.state.auth.user.setup) {
        const user = store.state.auth.user;
        var path = to.path !== "/setup" && to.path !== "/logout" ? "/setup" : false;

        if (path) {
            next({
                path: path,
                query: {
                    redirect: to.fullPath
                }
            });
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...