uniapp引用uni-simple-router在路由拦截器中如何获取 store 对象?

背景:当前uniapp 项目使用了 uni-simple-router 插件,来做路由管理,页面路由分两部分:

  1. 一部分不需要授权的页面,pageTitle 直接配置在 pages.json 对应页面的 mate 下面;
  2. 另一部分需要授权的页面,pageTitle 在数据库中配置;

大概流程是,登录后,获取菜单(路径、菜单名称等),写入 store 里面;现在想实现访问日志功能,就是用户访问了什么页面需要后台记录。

我的想法是通过路由拦截器,获取页面信息,然后调用后台接口,这样比较简单。

现在的问题是,我通过两种方式,都没能实现:

方式一:在 router/index.js 的路由拦截器中调用接口;

问题:这里的tofrom都能直接获取路由的mate,也就是能直接获取pageTitle,但是不知道该怎么访问 store(准备通过to.path 来对比 store中的菜单,从而获取需要授权页面的 pageTitle

router.beforeEach((to, from, next) => {

})

方式二:在 App.vue 中监听 $route对象;

问题:虽然这儿比较好获取 store 对象,但是tofrom对象属性mate中不包含自定义的pageTitle属性,该怎么解决?

    watch: {
        $route(to, from) {
            let path = to.path

        }
    },
阅读 1.9k
1 个回答

直接在需要的地方引入 Vuex 实例就好了呀。

// router.js
import store from '@/store' // 引入store

...

router.beforeEach((to, from, next) => {
   console.log('store', store)
})
// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  ...
})

export default store
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题