在store仓库中使用路由
在js文件中使用vue的router和store
在store仓库中使用路由在仓库中,this的指向指的是store,但是在一般的工程,我们有可能会需要在仓库中走路由等逻辑,这个时候就需要先找到全局vue,因为路由是vue的一个子模块
main.js
window.Vue = vue
const vue = new Vue({
el: '#app',
store,
router,
render: h => h(App)
})
window.Vue = vue
export default vue
store/index.js
const _router = window.Vue.$router
actions: {
getResourcesAsync ({commit}, path) {
const _router = window.Vue.$router
Vue.prototype.axios.post('/services/vp/motorcateUser/companyRoleResources/myResources', {})
.then((res) => {
if (res.code === 200) {
let resource = res.result
var urList = steamroller(resource)
var externalBtns = []
var ownBtns = []
sessionStorage.setItem('externalBtns', JSON.stringify(externalBtns))
sessionStorage.setItem('ownBtns', JSON.stringify(ownBtns))
commit('SET_RESOURCE', JSON.stringify(resource || {}))
if (path) {
if (urList.filter(item => item.granted && item.menuCode === path).length) {
const currentRoute = urList.filter(item => item.granted && item.menuCode === window.Vue.$route.name)
if (currentRoute.length) {
_router.go(0)
} else {
_router.replace({name: 'concat'})
}
} else {
_router.replace({name: 'concat'})
}
}
} else {
Vue.prototype.$message({
message: res.message,
type: 'info'
})
sessionStorage.removeItem('czb-sign-token')
sessionStorage.removeItem('czb-sign-info')
}
}).catch(() => {
sessionStorage.removeItem('czb-sign-token')
sessionStorage.removeItem('czb-sign-info')
})
}
}
在js文件中使用vue的router和store
在js文件中引入vue的路由配置文件 或者 store文件
import store from '../store';
import router from '../router';
//直接使用即可
router.push({'path': '/'})
store.state.XXX;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。