防止内存泄漏与同步调用接口:
提示:内存泄漏–在卸载组件时还在调用setState,例如: 使用setTimeout时,需要在卸载组件时清除定时器 clearTimeout,如图:
useEffect(() => {
const timeout = setTimeout(() => { //防止内存泄漏
const record = store.newWork.data[4];
const jsInitPromise = GetJsInitData(record.id); //调接口方法
const jsHcqdPromise = GetJsHcqd(record.id); //
Promise.all([jsInitPromise, jsHcqdPromise]).then((response) => { //同步调用
if (response[0]?.statusCode === 200 || response[1]?.statusCode === 200) {
form.setFieldsValue({});
}
});
}, 10);
return () => clearTimeout(timeout);
});
函数式组件,内存泄漏处理:
componentWillUnmount() {
this.setState = (state, callback) => {
return;
};
this.refresh();
}