javascript - 我们如何将数据传递给 vuex 动作
问题描述
我对 vuex 中的操作不太满意。
我不想在我的登录组件中调用一个使用 axios 进行 api 调用的 vuex 操作。
但是由于我的组件未在操作中接收到而传输的数据..
我不知道如何使这项工作..
this.$store.dispatch('REGISTER', {
username: this.username,
email: this.email,
password: this.password
})
.then((response) => {
console.log(response)
this.$router.push('/login')
})
.catch (() => {
this.error = true;
})
在我的 vuex 模块中:
import axios from "axios";
export default {
state: {},
mutations: {},
getters: {},
actions: {
REGISTER: ({ username, email, password }) => {
return new Promise((resolve, reject) => {
axios
.post(process.env.VUE_APP_API_URL + "auth/register", {
username: username,
email: email,
password: password
})
.then(({ data, status }) => {
if (status === 201) {
localStorage.setItem('access_token', data.data.token);
resolve(true);
}
})
.catch(error => {
reject(error);
});
});
},
}
};
谢谢
解决方案
您正在将一个对象传递给 vuex 操作。尝试修改您的操作方法:
REGISTER: ({ commit }, data) => {
let {username, email, password} = data
编辑:具体来说,任何 vuex 操作接收的第一个参数是一个包含提交、状态、getter 和调度的上下文对象。第二个参数是您通过调用 dispatch 传递给它的任何对象。– maiorano84
推荐阅读
- javascript - 尝试对 javascript + 本地存储不工作的测验进行评分
- javascript - 如何在 GraphQL/AWS Amplify 的前端启用 CORS 模式?
- amazon-web-services - 我正在尝试创建一个安全组,其中只有一台指定的计算机可以访问 AWS 上的资源
- html - 有没有更好的方法在 Blazor 的表格中显示数据?
- javascript - 在 each() 期间使用 js 或 jQuery 创建一个数组
- firebase - 如何在 BigQuery 上保留数据集而没有过期日期
- javascript - 导出为常量的函数数组
- php - Laravel:使用 whereBetween 返回未定义
- jquery - 如何使用动态生成的文本字段使 jquery 占位符浮动
- bash - 如何遍历 kubectl 的节点列表,回显每个节点名称?