我有一个简单的注册表单,其中包含电子邮件,密码和管理代码字段。我将这些数据传递给我的动作创建者,并在完成注册之前通过了三个操作。在那里的某个地方,它正在停止。它不返回任何错误。这是我的代码。
export const checkAdminCode = ({ email, password, adminCode }, history) => {
return (dispatch) => {
dispatch({ type: CHECK_ADMIN_CODE });
firebase.database().ref('/env/adminCode').once('value', (snapshot) => {
if (snapshot.val() === adminCode) {
return registerUser(email, password, history, dispatch);
}
return loginUserFail(dispatch);
});
};
};
const registerUser = (email, password, history, dispatch) => {
return (dispatch) => {
dispatch({ type: REGISTER_USER });
firebase.auth().createUserWithEmailAndPassword(email, password)
.then((user) => loginUserSuccess(dispatch, history, user))
.catch((err) => loginUserFail(dispatch, err));
};
};
const loginUserSuccess = (dispatch, history, user) => {
history.push('/admin/dashboard');
dispatch({
type: LOGIN_USER_SUCCESS,
paylaod: user
});
};
有几点需要注意:
if (snapshot.val() === adminCode) {
确实有用。registerUser
并且它有效。我放置了几个console.logs,试图找到故障发生的确切位置。在测试以下代码时:
const registerUser = (email, password, history, dispatch) => {
console.log('test1');
return (dispatch) => {
console.log('test2');
dispatch({ type: REGISTER_USER });
firebase.auth().createUserWithEmailAndPassword(email, password)
.then((user) => loginUserSuccess(dispatch, history, user))
.catch((err) => loginUserFail(dispatch, err));
};
};
console.log('test1');
工作,console.log('test2');
无效。
再一次,它没有返回任何错误,因此我不知道如何描述正在发生的事情或搜索的内容。
请帮忙。提前谢谢。
答案 0 :(得分:0)
registerUser
为async redux action
,您需要使用dispatch
进行调用。
您不需要明确地将dispatch
传递给调用函数。
它将通过redux隐含地传递。
export const checkAdminCode = ({ email, password, adminCode }, history) => {
return (dispatch) => {
dispatch({ type: CHECK_ADMIN_CODE });
firebase.database().ref('/env/adminCode').once('value', (snapshot) => {
if (snapshot.val() === adminCode) {
dispatch (registerUser(email, password, history));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
return loginUserFail(dispatch);
});
};
};