کارهای پرهزینه سمت رندر انجام ندید
محاسبات سنگین یا تحلیل روی دیتاها تو هر رندر انجام ندید.
useEffect(() => {
const filteredProducts = useMemo(() => {
const normalized = query.trim().toLowerCase();
return products.filter(product =>
product.name.toLowerCase().includes(normalized)
);
}, [products, query]);
دلیل: تو موبایل، فیلتر کردن چندینباره لیستهای بزرگ میتونه افت فریم و کندی برای کاربر داشته باشه.
نکته: useMemo برای بهینهسازی عملکرده، نه تضمین کننده صحت عملکرد. برای لیستهای بسیار بزرگ، باید فیلترینگ سمت سرور باشد، استفاده از FlatList پیشنهاد میشه و حتما روی گوشی موبایل عملکرد لیستهای بزرگ بررسی کنید.