为了账号安全,请及时绑定邮箱和手机立即绑定

VUEX 的 actions 中无法获取到 this 对象吗?

VUEX 的 actions 中无法获取到 this 对象吗?

守候你守候我 2018-09-03 12:17:49
查看完整描述

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

我之前也遇到这个问题,我是这样解决的
如果要在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
})


查看完整回答
反对 回复 2018-09-09
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果要在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'})
        })
    }
}


查看完整回答
反对 回复 2018-09-09
  • 2 回答
  • 0 关注
  • 4676 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信