Как получить доступ к $ route в файле с разделителями (vuex). js? - PullRequest
0 голосов
/ 19 марта 2020

Я использую vuex как разделенные (получатели. js, мутации. js, действия. js, состояние. js) файлы, и я хочу использовать переменную плагина $ route внутри разделенных получателей. js файл. На самом деле я использовал их все-в-одном, но я переключился на квазар, и квазар предлагает как-то использовать модуль vuex в разделенных файлах. Ну, это не наводит на мысль, но у него есть пример. Я знаю, что могу использовать это по-старому, но я хочу попробовать это, и из-за недостатка знаний я не уверен. Таким образом, это выглядит так:

└── store
      └─ routes
          ├── state.js
          ├── actions.js
          ├── mutations.js
          ├── getters.js
          └── index.js

и в индексе. js они все связаны как:

import state from './state'
import * as getters from './getters'
import * as mutations from './mutations'
import * as actions from './actions'

export default {
  namespaced: true,
  getters,
  mutations,
  actions,
  state
}

хорошо здесь, в получателях. js файл, который я экспортирую, const my предыдущие использованные функции. Но мне нужно получить доступ к плагину $ route в одном из них.

export const current_route = state => {
    return this.$route;
}

Кстати, я также знаю, что могу использовать маршрут this. $ Напрямую везде, где мне нужно (без использования геттера vuex) вместо этого, но я просто хочу знать, как получить доступ к этим переменным (или даже, если это вообще возможно) внутри этих разделенных файлов.

1 Ответ

1 голос
/ 19 марта 2020

Ниже приведен исходный код vue-router:

  Vue.mixin({
    beforeCreate () {
      if (isDef(this.$options.router)) {
        /* something else */
        Vue.util.defineReactive(this, '_route', this._router.history.current)
      } else {
        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this
      }
      /* something else */
    }
  })

  Object.defineProperty(Vue.prototype, '$route', {
    get () { return this._routerRoot._route }
  })

Как видите, $route - это псевдоним $router.history.current. Таким образом, вы можете импортировать router напрямую:

import router from 'path/to/your/router'
export const current_route = state => {
  return router.history.current
}
...