【发布时间】:2021-11-09 22:26:09
【问题描述】:
我正在使用 React Native CLI 和 RealmDB 创建一个应用程序来在本地保存数据。在产品列表屏幕上,useEffect 函数返回错误::
Warning: Can't perform a React state update on an unmounted component.
This is a no-op, but it indicates a memory leak in your application. To fix, cancel all
subscriptions and asynchronous tasks in a useEffect cleanup function.
代码:
const [didMount, setDidMount] = useState(false);
const [products, setProducts] = useState<Product[]>([]);
useEffect(() => {
setDidMount(true);
async function loadProducts() {
const realm = await getRealm();
try {
if (!didMount) return;
const data: Product[] = realm
.objects('Product')
.sorted('id', true) as any;
setProducts(data);
} catch (err) {
console.error(err);
}
}
loadProducts();
return function cleanup() {
setDidMount(false);
};
}, []);
【问题讨论】:
-
为什么需要loadProducts函数...为什么不直接运行
useEffect里面的代码 -
你在哪里声明
setDidMount和didMount -
当屏幕加载时我想要更新产品
-
但是你不需要嵌套函数
-
我在
products和setProducts上面声明了
标签: javascript react-native realm use-effect