ERSTE ANTWORT
In main.js
(dem, in dem wir alle Module "installieren" und eine Vue
Instanz erstellen , dh src/main.js
):
const vm = new Vue({
el: '#app',
router,
store,
apolloProvider,
components: { App },
template: '<App/>'
})
export { vm }
Dies ist mein Beispiel, aber in unserem Fall ist das wichtigste hier const vm
undrouter
In Ihrem store
:
import { vm } from '@/main'
yourMutation (state, someRouteName) {
vm.$router.push({name: someRouteName})
}
PS Mit können import { vm } from '@/main'
wir auf alles zugreifen, was wir brauchen Vuex
, zum Beispiel vm.$root
was von einigen Komponenten von benötigt wird bootstrap-vue
.
PPS Es scheint, dass wir nur verwenden können, vm
wenn alles geladen ist. Mit anderen Worten, wir können vm
inside nicht verwenden someMutation
, falls wir someMutation
inside aufrufen mounted()
, da mounted()
es vor dem Erstellen kommt / auftritt vm
.
NEUE ANTWORT
Constantins Antwort (die akzeptierte) ist besser als meine, also möchte ich Anfängern nur zeigen, wie man sie umsetzt.
Innenkern dir (innen /src
in meinem Fall), neben App.vue
, main.js
und andere , die ich habe router.js
mit dem Inhalt:
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/pages/Home/TheHome'
const Page404 = () => import( '@/components/pages/404)
const Page503 = () => import(/* webpackChunkName: "Page503" */ '@/components/pages/503)
Vue.use(Router)
const router = new Router({
mode: 'hash',
base: process.env.BASE_URL,
linkExactActiveClass: 'active',
routes: [
{
path: '*',
name: 'Page404',
component: Page404
},
{
path: '*',
name: 'Page503',
component: Page503
},
{
path: '/',
name: 'Home',
component: Home
},
{....},
{....}
]
})
router.beforeEach(async (to, from, next) => {
next()
})
export default router
Importieren Sie unseren Router nach main.js
:
import Vue from 'vue'
import App from './App.vue'
import router from './router'
Vue.config.productionTip = false
const vm = new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
export { vm }
Schließlich innerhalb Ihrer Komponente oder Vuex oder irgendwo anders import router from './router'
und tun, was Sie brauchen, wie zrouter.push(...)