gpt4 book ai didi

reactjs - 分派(dispatch)触发后使用状态

转载 作者:行者123 更新时间:2023-12-04 11:36:41 26 4
gpt4 key购买 nike

在使用 dispatch 更新 useReducer 状态后,我需要能够立即执行操作。但是 dispatch 运行异步所以当我运行我的下一段代码时,它在 dispatch 应该更新它之前使用旧状态。

我尝试过的是使用 useEffect(()=>{},[state]),但它只是在每次状态更新时运行。我需要根据条件执行某些操作......不仅仅是每次状态更新时。

// Let's update some stuff on the server with new data!
const handleFinishOrder = () => {

dispatch({ type: "finish-order", payload: id }); // Set some fields to null

socket.emit("request-update-live-data", state); // Old state gets sent to server :(
};

我希望在我将状态发送到服务器时更新状态,但发送的实际状态是旧状态。

最佳答案

dispatch是异步处理的,API 不提供任何方式来执行 dispatch 之后的一段代码。已被处决。

事实上,如果您尝试将回调函数传递给 dispatch,它会特别警告。 :

Warning: State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().



所以,你应该做 socket.emituseEffect具有适当的依赖项列表。

或者,您可以在您的 reducer 函数中针对特定操作类型执行此操作。

关于reactjs - 分派(dispatch)触发后使用状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com