如何解决等待State使用UseState挂钩进行更新,然后在功能内部运行代码
const startLive = () => {
// connect to websocket only on start button
setliveChartState({
...liveChartState,liveActive: !liveChartState.liveActive,historicLiveActive: true,start: new Date(),});
/*- - - -after updation - - - >*/
const { ws,liveActive } = liveChartState;
// if clicked on stop then close websocket
if (!liveActive && ws) {
ws.close();
clearLiveInterval();
}
// if clicked on start and websocket close then connect
if ((!ws || ws.readyState === WebSocket.CLOSED)&& liveActive) connect();
fetchData("historic");
};
单击开始按钮时,将调用startlive函数。该函数用于更新状态,然后执行后面提到的代码。
但是它在setlivechartstate甚至还没有完成更新时运行。
我不想使用“使用效果”钩子,因为我只想仅在单击按钮时才运行代码,因为它既可以作为开始也可以作为停止,还可以在其他功能中更改liveActive。因此,使用useEffect与这种依赖性造成了问题
使此功能正常工作并仅在更新完成后运行代码的最佳方法是什么
解决方法
新设置的状态值将仅在下一次渲染时可用。我建议使用useeffect。或者,您可以改用useReducer。那也可以
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。