reactjs - React 调度不起作用(userService 函数未在 userAction 中触发)
问题描述
当我提交表单时,它会触发一个操作登录(来自userActions
)。在这个动作中,我使用 dispatch 来使用 myuserService
进行 API 调用。当我提交它时,调度不起作用。如果我 console.log 操作的结果,我的代码会出现,如下所示:
Action was called // Custom message
dispatch => {
dispatch(request({
email
}))
_services_userService__WEBPACK_IMPORTED_MODULE_1__["userService"].login(email, password).then( appSate => {return appSate;},error => {console.lo…
我应该检索我的用户...这里有什么问题?
登录表单.js
handleFormSubmit(e) {
e.preventDefault();
const credentials = {
email: this.state.email,
password: this.state.password
}
if (credentials) {
let test = login(credentials);
console.log("Action was called");
console.log(test);
this.setState(redirect => true)
}
}
userActions.js -> 登录()
export const login = (email,password) => {
console.log('is in action');
return dispatch => {
dispatch(request({ email }));
userService.login(email,password)
.then(
appSate => {
return appSate;
},
error => {
console.log(error);
}
);
};
function request(user) { return { type: userConstants.LOGIN_REQUEST,user } }
}
userService.js -> 登录()
function login(credentials) {
console.log("In userService login function");
return axios.post('/api/login',credentials)
.then(response => {
if (response.data.success) {
console.log("Login Successful!");
let userData = {
firstname: response.data.user.firstname,
surname: response.data.user.surname,
id: response.data.user.id,
email: response.data.user.email,
auth_token: response.data.access_token,
};
let appState = {
isLoggedIn: true,
user: userData
};
localStorage.setItem("appState",JSON.stringify(appState));
return appState;
}
});
}
解决方案
我想你忘记了返回语句 userActions.js。尝试这个
export const login = (email,password) => {
console.log('is in action');
return dispatch => {
dispatch(request({ email }));
return userService.login(email,password)
.then(
appSate => {
return appSate;
},
error => {
console.log(error);
}
);
};
function request(user) { return { type: userConstants.LOGIN_REQUEST,user } }
}
推荐阅读
- java - Java 8 DateTimeFormatter 解析可选部分
- git - 我可以在父目录中同时使用 Git 和 Mercurial - Git,在子目录中使用 Mercurial hg?
- laravel - 没有机器人的 Laravel 会话
- python - 我可以在 model_fn、Estimator、Tensorflow 中使用 python for 循环吗?
- javascript - 如何在 D3.js 中为堆叠栏中的每个文本标签添加背景?
- php - Sage Pay Reporting API - 生成的签名哈希无效
- html - 调整大小时无法居中 div
- javascript - 如何使用 SVG.js 为线条制作动画
- java - 如何在Java中用特殊字符分隔字符串
- c - 失败并出现错误:''operator' 不是有效的安装包