开发者问题收集

未捕获(在承诺中)TypeError:无法在字符串上创建属性“token”

2022-12-19
153

我正在尝试使用 vuex 实现身份验证。我有一个注册组件和一个用于提交数据的 auth.js。

我的后端 API 运行良好,但问题是当我尝试登录时。当我在操作方法中控制台登录时,我能够获取令牌。

当我在 SET_TOKEN 突变之前控制台登录时,我也能够获取数据。

但在突变中,数据像对象一样被接收。我该如何解决错误?

import axios from "axios"

export default{
    namespaced: true,
    state: {
        token: null,
        user: null
    },
    
    mutations: {
        SET_TOKEN(access_token, state){
            console.log(this, access_token)
            state.token = this,access_token
        },
    },
    
    actions: {
        async loginUser({ dispatch }, form) {
            let response = await axios.post('/api/auth/login', form)
            dispatch('attempt', response.data.data.access_token)
        },

        async attempt({ commit }, access_token){
            commit('SET_TOKEN', access_token)
        }
    }
}
1个回答

我认为您稍微混淆了突变参数的顺序。第一个是状态,第二个是有效载荷(在您的例子中是令牌)

SET_TOKEN(state, token) {
  state.token = token;
},
Romalex
2022-12-19