3 个回答

如果要在actions中发出请求,可以这样做

// main.js

import VueResource    from 'vue-resource'    // 当然vue-source需要自己去npm下载
Vue.use(VueResource)
// actions.js 就是放actions的文件

import Vue      from 'vue'
actions: {
    isAccessToken({commit}, access_token) {
        return Vue.http.get('/api/token', () => {
            //...
        })
    }
}

如果要在actions中查看路由信息,试试这样

// actions.js

import router from '../router'   // 路径不一定对,为router路由信息存放的路径
actions: {
    isAccessToken({commit}, access_token) {
        return Vue.http.get('/api/token', () => {
            console.log(router.currentRoute)
            router.push({name: 'login'})
        })
    }
}
新手上路,请多包涵

我之前也遇到这个问题,我是这样解决的
如果要在actions 或者 mutations 中使用this对象。可以在调用的时候把this对象传过去。
例如

//在组件中
this.$store.store.commit("methods", this)
mutations中
methods(state, vue){
    vue.$router  //调用this对象的路由对象
}

要注意的是, mutations和actions只能接受一个参数, 如果要传入超过2个参数,那就以对象形式传参
例如:

//在组件中
this.$store.store.commit("methods", {
    "this":this, //Vue对象
    "a": aaa
})

不能.要获取路由信息考虑用vue-router-sync

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