【问题标题】:How to store React local state to Redux global store (HOOKS)如何将 React 本地状态存储到 Redux 全局存储(HOOKS)
【发布时间】:2021-05-29 15:35:36
【问题描述】:
const initReactiveProperties = (user: any) => {
    //TODO: change 'any' to customized interface
    user.connected = true;
    user.messages = [];
    user.hasNewMessages = false;
    setConnectedUsersList((prevUsers: any) => [...prevUsers, user]); //setting the connected users in state
  };

  // storing connected users
  const setConnectedUsers = () => {
    socket.on("users", (users) => {
      users.forEach((user: any) => {
        user.self = user.userID === socket.id; // if the user is the authenticated user
        initReactiveProperties(user);
      });
      users = users.sort((a: any, b: any) => {
        if (a.self) return -1;
        if (b.self) return 1;
        if (a.username < b.username) return -1;
        return a.username > b.username ? 1 : 0;
      });
    });
  };

  // after new user connects, store it in an array
  const storeNewUser = () => {
    socket.on("user connected", (user) => {
      initReactiveProperties(user);
      // dispatch({ type: CONNECTED_USERS, payload: connectedUsersList });
    });
  };

  useEffect(() => {
    setConnectedUsers();
    storeNewUser();
    dispatch({ type: CONNECTED_USERS, payload: connectedUsersList });
  }, []);

connectedUsersList 获取所有当前连接的用户,我想更新我的 redux 全局存储中的 usersList,但它不会立即作为 connectedUsersList 以 redux 状态存储。但事实并非如此。

【问题讨论】:

  • 能否详细说明您的要求,为什么要立即更新?
  • 我想将本地状态下的 connectedUsersList 存储到全局商店 redux 中的 usersList 中

标签: reactjs redux react-redux socket.io


【解决方案1】:

如果你想在 redux 用新的 connectedUsersList 更新后做一些事情,你可以使用 useEffect。

const usersListFromRedux = useSelector(state => state.usersReducer.usersList)

useEffect(() => {
  ...do something
}, [usersListFromRedux]);

【讨论】:

    猜你喜欢
    • 2022-10-20
    • 2019-12-12
    • 2018-07-14
    • 2020-08-06
    • 2020-07-22
    • 1970-01-01
    • 2016-04-21
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多