reactjs Redux状态在函数外部更新,但不在函数内部更新

hgc7kmma  于 2023-01-30  发布在  React
关注(0)|答案(1)|浏览(131)

我试图将redux状态的值receiver发送到后端,唯一的问题是,发送状态的函数内部的receiver的值与函数外部的值不同。

注意:这不是不变性/组件不重新呈现的问题

This is a snipped of my code:

 const { logged, receiver } = useSelector(
    (state: RootState) => state.loggedAndReceiver
  ); 

  console.log("Receiver1: ", receiver);


 async function getMessage(e: React.MouseEvent<HTMLElement, MouseEvent>) {
    e.preventDefault();
    const target = e.target as HTMLElement;

    await dispatch(setReceiver(target.innerText));
    console.log("Receiver: ", receiver);

    try {
      const url =
        "http://localhost:3001/loadChat?logged=" +
        logged +
        "&reciever=" +
        receiver;
      const response = await fetch(url);

      const jsonData = await response.json();
      dispatch(setMessage(jsonData));

    } catch (error: any) {
      console.log(error.message);
    }
  }

在这段代码中,日志console.log("Receiver1: ", receiver);记录了接收器的最新版本,这是正确的,问题是我的函数console.log("Receiver: ", receiver);中的日志,这个记录了以前的状态,这让我很困惑,因为它上面的调度函数是唯一更新我的redux状态的东西,那么我应该如何在我的函数中使用我的redux状态,然后把它发送到我的服务器上?

w9apscun

w9apscun1#

这里可能存在竞争条件。
如果target.innerText是新的状态,首先在fetch请求中发送它,然后更新存储。

相关问题