我在我的应用程序中使用Navigator组件来呈现路由内容我使用fetch来执行http请求以从服务器获取数据。
function add(arg1, arg2) {
if (isNan(arg1) || isNan(arg2)) return undefined;
if (!arg2) {
return functionName(arg1);
}
return arg1 + arg2;
}
我遇到的问题是,当调用它的组件不再安装时,有时会触发fetch,因此我不断收到错误,我试图更新未安装的组件。如果您在路线之间快速移动会发生这种情如果卸载组件,有没有办法终止关闭执行?
答案 0 :(得分:3)
在安装组件时,您应该开始fetch
请求Promise
并存储它。
然后您可以将此Promise
设为CancelablePromise
并取消卸载该组件的承诺。
Here您可以阅读如何制作CancelablePromise
。
答案 1 :(得分:0)
在设置状态之前,您应该检查组件是否已安装。
componentDidMount() {
this.isMounted = true;
fetch(url).then((res) => {
if(this.isMounted) {
this.setState({this.data: res});
}
});
}
componentWillUnmount() {
this.isMounted = false;
}