vue中,store.js和router.js怎么互相调用

发布于 2022-09-11 23:40:26 字数 978 浏览 13 评论 0

问题描述

使用了VueXvue-router的Vue项目中,

  1. store.js中import router
  2. router.js中import store
  3. main.js中同时import store和router

导致出错

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
main.js中

import Vue from 'vue'
import App from './App.vue'
import store from './store'
import router from './router'

router.js中

import store from './store'
var router = new Router({
  routes: [
    {
      path: '/',
      redirect: function(){
          //此处需要通过查询store中储存的权限,判断应该让用户去哪个页面,所以引入了store
      }
    }
  ]
})

store.js中

import Vue from 'vue'
import Vuex from 'vuex'
import router from './router'
Vue.use(Vuex);

var store = new Vuex.Store({
  mutations: {
    logout(state){
      router.push("/login");//此处需要跳转到登录页,因此引入了router
    }
  }
})

你期待的结果是什么?实际看到的错误信息又是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凉宸 2022-09-18 23:40:26

globals.js

const datas = {}
export const setRouter = router => {
  datas.router = router
}
export const setStore = store => {
  datas.store = store
}
export const getRouter = () => datas.router
export const getStore = () => datas.store

router.js

import { setRouter, getStore } from './globals'
const router = new Router({
  routes: [
    {
      path: '/',
      redirect(){
          const store = getStore()
          //此处需要通过查询store中储存的权限,判断应该让用户去哪个页面,所以引入了store
      }
    }
  ]
})
setRouter(router)

store.js

import Vue from 'vue'
import Vuex from 'vuex'
import { setStore, getRouter } from './globals'
Vue.use(Vuex);

const store = new Vuex.Store({
  actions: {
    logout(){
      const router = getRouter()
      router.push("/login");//此处需要跳转到登录页,因此引入了router
    }
  }
})
一城柳絮吹成雪 2022-09-18 23:40:26

import store from './store' // 先引入store

// 使用
store.state.xxx // 获取state的数据
store.getters.xxx // 获取getters的数据
store.commit('mutationFun', param, param2...) // commit执行mutations中的方法,param为参数
store.dispatch('actionFun', param1, param2...) // dispatch执行actions中的方法,param为参数

国产ˉ祖宗 2022-09-18 23:40:26

1、首先不需要在store里面引入router了吧,store只保存数据,跳转到某个页面的逻辑应该在router里。
2、权限判断去跳转路由使用导航手腕链接描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文