数据在动作接线的某处丢失

Data is lost somewhere in action wiring

我有一个简单的注册表单,其中包含电子邮件、密码和管理员代码字段。我将这些数据传递给我的动作创建者,并在完成注册之前让它通过三个动作。在那里的某个地方,它只是停止了。 returns 没有错误。这是我的代码。

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
  });
};

注意几点:

console.log('test1'); 有效,console.log('test2'); 无效。

再一次,它没有返回任何错误,所以我不知道如何描述正在发生的事情或要搜索的内容。

请帮忙。提前致谢。

registerUserasync 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);
        });
      };
    };