store.commit('initialiseStore') new Vue({ router, store, vuetify, render: h => h(App) }).$mount('#app') Так чтоли?
как это будет работать до создания инстанса вью ??
router.beforeEach((to, from, next) => { ... if (store.getters.GET_TOKEN) { next({name: 'Profile'}) } ...
действительно КАК?
покажи полный код
речь ведь о vuex ? если его можно использовать отдельно от вью, то не знал ...
main.js: import Vue from 'vue' import App from './App.vue' import VueRouter from 'vue-router' import Axios from 'axios' import {store} from './store' import {router} from './router/router' import vuetify from './plugins/vuetify'; import { VueMaskDirective } from 'v-mask' Vue.directive('mask', VueMaskDirective); import VueDadata from 'vue-dadata' Vue.use(VueDadata) Vue.prototype.$http = Axios Vue.config.productionTip = false Vue.use(require('vue-moment')) Vue.use(VueRouter) new Vue({ router, store, vuetify, beforeCreate() { this.$store.commit('initialiseStore');}, render: h => h(App) }).$mount('#app') router: import VueRouter from 'vue-router' import {routes} from './routes'; import store from '../store/index' import {roles} from "../enums/enums"; const router = new VueRouter({ mode: 'history', routes }) router.beforeEach((to, from, next) => { if(to.matched.some(record => record.meta.requiresAuth)) { if (store.getters.IS_LOGGED_IN) { next() } else { next('/login') } } else { if (to.matched.some(record => record.meta.guest)) { console.log('router.store.getters.GET_TOKEN', store.getters.GET_TOKEN) console.log('router.store.getters.GET_USER', store.getters.GET_USER) if (store.getters.GET_TOKEN) { next({name: 'Profile'}) } else { console.log('unauth'); next() } } else { if (to.matched.some(record => record.meta.isAdmin)) { if (store.getters.GET_USER.role === roles.admin) { next() } else { next({name: 'Home'}) } } else { if (to.matched.some(record => record.meta.need_details_register)) { // console.log('Check route', store.getters.GET_USER) if (store.getters.GET_USER.profile.register_step !== 0) { next({name: 'RegisterDetails'}) } else { next({name: 'Home'}) } } else { next() } } } } }) export {router} if (token) { state.token = token; axios.defaults.headers.common['Authorization'] = `Bearer ${token}` } }, }; const storeTotal = { state, mutations, getters, actions } export const store = new Vuex.Store(storeTotal) export default store
я к тому что после new Vuex.Store({}) он уже работает, стейт, мутации всё уже работает, а когда ты добавляешь его во vue просто добавляется переменая $store к обьекту да и всё
store/index,js: require('dotenv').config() import Vue from 'vue' import Vuex from 'vuex' import axios from 'axios' Vue.use(Vuex); export const state = () => ({ token: null ... }); export const mutations = { initialiseStore(state) { let token = localStorage.getItem('token') if (token) { state.token = token; axios.defaults.headers.common['Authorization'] = `Bearer ${token}` } }, }; ... const storeTotal = { state, mutations, getters, actions } export const store = new Vuex.Store(storeTotal) export default store
спасибо за разъяснение )👍 не знал, не смотрел на это с этой стороны )
рад что то показать)
Обсуждают сегодня