Я новичок в Vue.js
Я использую Vue.js 2.4.4. Я создал глобальный миксин в своем файле app.js:
...
import router from './router'
...(some imports and plugins definitions)
Vue.use(VeeValidate);
Vue.component(VuePassword);
...
Vue.mixin({
data: function(){
return {
get auth(){
return Auth;
}
}
}
});
const app = new Vue({
el: '#root',
template: `<app></app>`,
components: { App },
router
});
Этот миксин импортирует некоторый объект Auth с методами проверки e.t.c, которые должны быть в каждом компоненте. Все мои компоненты могут проверить этот миксин, и он работает нормально.
Но мне нужно проверять состояние аутентификации после каждого запроса маршрута, и я хочу использовать свой существующий миксин, поэтому я пытаюсь сделать что-то вроде этого в моем файле router.js:
import Vue from 'vue'
import VueRouter from 'vue-router'
...
Vue.use(VueRouter);
const router = new VueRouter({
routes:[
...
]
});
router.beforeEach((to, from, next) => {
if(to.meta.requiresAuth) {
if(...call to mixin method) {
next();
} else {
next('/');
}
} else {
next();
}
});
export default router
Вопрос: Есть ли способ получить глобальный объект миксина и изменить его внутренние значения, или вы можете дать небольшой совет или пример того, что является правильным решением для такого рода задач? Или мне лучше использовать плагины вместо миксинов?
Vuex
. Это конечный автомат для Vue. Вы храните всю информацию об авторизации в состоянии, а затем читаете ее с помощью маршрутизатора и миксина. - person webnoob   schedule 15.11.2017