Задать вопрос
dima9595
@dima9595
Junior PHP

Почему vuex $store выдаёт «undefined»?

Хай. Возобновил я значит обучение Vue.JS, и тут сразу проблема:

Есть файл route, в котором прописываются все роуты и проверки на авторизацию:
import Vue from 'vue'
import VueRouter from 'vue-router'
import Meta from 'vue-meta'

Vue.use(VueRouter)
Vue.use(Meta)

/**
 * Для пользователей
 * @constructor
 */
const Home = () => import('../components/home.vue')

/**
 * Для гостей
 * @constructor
 */
const Welcome = () => import('../components/welcome.vue')

/**
 * Страница ошибок
 * @constructor
 */
const NotFound = () => import('../components/errors/NotFound.vue')

const router = new VueRouter({
	mode: 'history',
	routes: [
		/* Нейтральные страницы */
		{ path: '/', name: 'home', component: Home, meta: {isAuth: true} },
		{ path: '/welcome', name: 'welcome', component: Welcome, meta: {guest: true} },

		{
		    /* 404 - Page not found */
		    path: '/404',
		    name: 'notfound',
		    component: NotFound
		}, {
		    path: '*',
		    redirect: '/404'
		}
	],

	linkActiveClass: '',
	linkExactActiveClass: ''
});

console.log(this.$store)    // Пробуем получить хоть что-то

// Тут будет проверка на авторизацию и выдачу необходимого роута
// router.beforeEach(
// 	(to, from, next) => {
// 		if(to.matched.some(record => record.meta.isGuest)){
// 			if(this.$store.state.auth.check){
// 				next({
// 					path: '/'
// 				})
// 			} else next()
// 		}else if(to.matched.some(record => record.meta.isAuth)){
// 			if(!this.$store.state.auth.check){
// 				next({
// 					path: '/auth/login'
// 				})
// 			}else{
// 				next()
// 			}
// 		} else next()
// 	}
// )

export default router


Сам, собственно, Vuex:
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const state = {
	auth: {
		check: false,
		user: {}
	}
}

export default new Vuex.Store({
	strict: process.env.NODE_ENV !== 'production',

	state,

	getters: {
		/**
		 * Проверка пользователя на авторизацию
		 * @param state
		 * @returns {boolean}
		 */
		authCheck: (state) => {
			if(state.auth.check){
				return true
			}

			return false
		}
	},

	mutations: {},
})


И когда я хочу получить данные геттера, то в файле route не могу - undefined пишет. А вот, например, в файле home.vue, в created() у меня данные выводятся. Как я только не пытался получить значения (как то давно мне кто-то советовал):
Vue.store
Vue.$store
this.store
this.$store


Заранее, спасибо за помощь!
  • Вопрос задан
  • 1960 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Artem0071
Безработный mr. Junior
Потому что вы нигде в роутере не указали откуда ему брать этот store
Импортируйте его отдельно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы