我试图将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状态,然后把它发送到我的服务器上?
1条答案
按热度按时间w9apscun1#
这里可能存在竞争条件。
如果
target.innerText
是新的状态,首先在fetch
请求中发送它,然后更新存储。