首页 > 解决方案 > 如何更改包含 Firestore 异步功能的减速器的状态

问题描述

我正在配置这个reducer,以便在firestore上创建一个文档后,它将payload作为reducer状态返回。我尝试使用 redux thunk,但我认为我使用得不好,因为这段代码会从 redux devtool 扩展中删除 reducer。

  switch (action.type) {

    case "create-chatroom":
      const room = action.payload.roomName;
      return (dispatch) => {
        const user = Auth.currentUser;
        Db.collection("chatrooms")
          .doc(action.payload.roomName)
          .set({
            authUsers: [user.uid],
            messages: {
              data: {
                sender: "notification",
                text: `${action.payload.roomName} has been created`,
                timestamp: FieldValue.serverTimestamp(),
              },
            },
            public: action.payload.public,
          })
          .then(() => {
            dispatch({ type: "set-current-room", payload: room });
          })
          .catch((err) => {
            dispatch({ type: "set-room", payload: state });
          });
      };

case "set-current-room":
      return action.payload;

标签: reactjsreduxreact-reduxredux-thunk

解决方案


推荐阅读