【问题标题】:Chaining redux thunks链接 redux thunk
【发布时间】:2018-12-19 05:41:29
【问题描述】:

我想更新用户详细信息点击提交,等待更新,然后将其发布到 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

我必须非常接近,我只需要正确返回一个承诺。 有什么想法吗?

【问题讨论】:

    标签: javascript reactjs redux redux-thunk


    【解决方案1】:

    您好像错过了 writeToFirebase 呼叫,并从错误的位置呼叫 then,请尝试使用以下代码:

    export const updateUserDetailsThenUpdateFirebase = updatedUser => {
      return (dispatch, getState) => {
        dispatch(updateUserDetails(updatedUser));
    
        writeToFirebase(updatedUser).then(() => {
          const storeData = getState();
          // ... called after firebase finishes
        });
      };
    };
    

    【讨论】:

      【解决方案2】:

      啊,所以我非常接近: 神奇地,神奇地,

      这行得通:

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

      【讨论】:

        猜你喜欢
        • 2019-04-06
        • 2018-01-31
        • 2018-10-16
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 2019-04-01
        • 2019-02-02
        • 2018-03-20
        相关资源
        最近更新 更多