【发布时间】:2022-01-13 04:14:38
【问题描述】:
我正在尝试处理本机反应中的内存泄漏。 我已经学习了很多教程,但无济于事。
这是我的原始代码
useEffect(() => {
const unsubscribe = navigation.addListener('focus', () => {
setLoading(true);
async function fetchData() {
try {
await dispatch(fetchProductComment(itemNum, ''));
await dispatch(fetchMultiBuy(itemNum, 'SIZES'));
...
} catch (err) {
console.log(err);
} finally {
setLoading(false);
}
}
fetchData();
});
return unsubscribe;
}, [navigation]);
查看教程后,我尝试了Boolean Flag 方法和Abort Controller 方法以避免内存泄漏。但这些都不起作用。
***ABORT CONTROLLER METHOD***
useEffect(() => {
let abortController = new AbortController();
const unsubscribe = navigation.addListener('focus', () => {
setLoading(true);
async function fetchData() {
...
}
fetchData();
});
return () => {
abortController.abort;
unsubscribe;
};
}, [navigation]);
***BOOLEAN METHOD***
useEffect(() => {
let componentMounted = true;
const unsubscribe = navigation.addListener('focus', () => {
setLoading(true);
async function fetchData() {
...
}
fetchData();
});
return () => {
componentMounted = false;
unsubscribe;
};
}, [navigation]);
这些不起作用。有什么想法吗?
【问题讨论】:
标签: reactjs react-native asynchronous