ERSTE ANTWORT
In main.js(dem, in dem wir alle Module "installieren" und eine VueInstanz 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 vmundrouter
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.$rootwas von einigen Komponenten von benötigt wird bootstrap-vue.
PPS Es scheint, dass wir nur verwenden können, vmwenn alles geladen ist. Mit anderen Worten, wir können vminside nicht verwenden someMutation, falls wir someMutationinside 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 /srcin meinem Fall), neben App.vue, main.jsund andere , die ich habe router.jsmit 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(...)