【发布时间】:2020-04-22 23:55:03
【问题描述】:
这是在一个功能组件中。
我有一个看起来像这样的submit() 函数:
async function handleSubmit(event) {
event.preventDefault();
try {
let resp = await fetch("FOOBAR/BAX", {
method: 'POST',
body: JSON.stringify({ /*stuff*/})
});
if (resp.ok){
// yadda yadda yadda
props.history.push("/"); // navigate
}
}
}
现在,当我导致导航发生时,我得到了可怕的“无法对未安装的组件执行 React 状态更新”。错误。
那么,使用效果,我如何确保清理这个 fetch 调用?我看到的所有示例都使用useEffect 来设置然后清理调用(带有清理功能)。
【问题讨论】:
-
您的
handleSubmit函数中似乎没有任何状态变化。我看这里没有什么要清理的。你愿意分享更多代码吗,也许是在 stackblitz 上? -
@yonki 谢谢,也许我的假设是错误的。
-
@yonki 假设我想确保该请求被取消——我将如何使用 useEffect 来做到这一点?
-
@mtyson 我相信@yonki 会通知您该错误与您共享的代码不匹配。您的
handleSubmit函数似乎没有更新状态(除非它隐藏在 yadda yadda yadda 位中)。关于使用useEffect钩子取消获取请求,您可以将abort controller 与获取请求一起使用。如果您需要帮助,请告诉我们。同时,应 yonki 的要求,您能否分享更多组件代码或在 stackblitz 或 codesandbox 中分享指向它的链接?
标签: javascript reactjs react-effects