Javascript React.js在组件中没有操作?
我相信no op来自我的useEffect,因此,我尝试实施清理。但是,我仍然存在no-op问题。这是错误: 无法对未安装的组件执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务。 以导出格式(由父级创建) 在div中(由ForwardRef(网格)创建) 在ForwardRef(网格)中(由WithStyles(ForwardRef(网格))创建) 在WithStyles中(ForwardRef(Grid))(由父级创建) 以下是我的useEffect实现:Javascript React.js在组件中没有操作?,javascript,reactjs,memory-leaks,use-effect,Javascript,Reactjs,Memory Leaks,Use Effect,我相信no op来自我的useEffect,因此,我尝试实施清理。但是,我仍然存在no-op问题。这是错误: 无法对未安装的组件执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务。 以导出格式(由父级创建) 在div中(由ForwardRef(网格)创建) 在ForwardRef(网格)中(由WithStyles(ForwardRef(网格))创建) 在WithStyles中(ForwardRef(Gr
React.useEffect(() => {
let isSubbed = true;
const fetchFormats = async (subbedStatus) => {
getEGMFormats(enums.EGM_EXPORT_FORMATS)
.then((data) => {
subbedStatus && setResponse(data.data);
})
.catch((err) => {
subbedStatus && setErrorStatusCode(err.response.status);
})
.finally(() => {
subbedStatus && setIsSubmitting(false);
});
};
fetchFormats(isSubbed);
return () => {
cancelAxios();
isSubbed = false;
};
}, [setErrorStatusCode]);
cancelAxios函数调用正在导入,但其功能如下:
export const cancelAxios=()=>source.cancel()
我在这里做错了什么,或者可能在我的组件的其他地方?这是组件中唯一的使用效果?Hm。。。您应该使用闭包中的标志变量,而不是函数参数
React.useEffect(() => {
let isSubbed = true;
const fetchFormats = async () => {
getEGMFormats(enums.EGM_EXPORT_FORMATS)
.then((data) => {
isSubbed&& setResponse(data.data);
})
.catch((err) => {
isSubbed&& setErrorStatusCode(err.response.status);
})
.finally(() => {
isSubbed&& setIsSubmitting(false);
});
};
fetchFormats();
return () => {
cancelAxios(); // not sure what is this...
isSubbed = false;
};
}, [setErrorStatusCode]);
不是很好的解决方案,但很有帮助,谢谢。事实证明,我必须在另一个子组件中实现这一点,并删除cancelAxios()。