链接redux thunk

时间:2018-07-11 08:49:24

标签: javascript reactjs redux redux-thunk

我想更新用户详细信息,然后单击“提交”,等待更新,然后将其发布到firebase。

我有以下内容:

export const writeToFirebase = details => {
  return firebase
    .database()
    .ref("/")
    .set({
      id: details.id,
      name: details.name,
      username: details.username,
      email: details.email
    });
};

export const updateUserDetails = updatedUser => {
  return dispatch => {
    dispatch({ type: UPDATE_USER_DETAILS, updatedUser });
  };
};

export const updateUserDetailsThenUpdateFirebase = updatedUser => {
  return (dispatch, getState) => {
    return dispatch(updateUserDetails(updatedUser)).then(() => {
      const storeData = getState();
    });
  };
};

最后一个函数是我将在单击时调用的函数。中间的功能是接受输入,然后更新商店(目前可以正常使用)

但是,我无法读取未定义的then吗?我尝试过以下操作:https://github.com/reduxjs/redux/issues/1676

我必须非常亲密,我只需要正确返回承诺即可。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

好像您错过了writeToFirebase通话,并从错误的地方拨打了then,请尝试使用以下代码:

export const updateUserDetailsThenUpdateFirebase = updatedUser => {
  return (dispatch, getState) => {
    dispatch(updateUserDetails(updatedUser));

    writeToFirebase(updatedUser).then(() => {
      const storeData = getState();
      // ... called after firebase finishes
    });
  };
};

答案 1 :(得分:0)

啊,所以我很亲近: 神奇而神奇地

这有效:

export const updateUserDetailsThenUpdateFirebase = updatedUser => {
  return (dispatch, getState) => {
    return dispatch(updateUserDetails(updatedUser)).then(() => {
      const foundUser = getState().selectedUser;
      const userToUpdate = getState().users.users.filter(
        user => user.id === foundUser.id
      );
      return writeToFirebase(userToUpdate, 1);
    });
  };
};