React · Middle · Запитання 51 з 75
Що не так із цим ефектом?
const [filtered, setFiltered] = useState([]);
useEffect(() => {
setFiltered(items.filter((i) => i.visible));
}, [items]);- ✓Правильна відповідь: Похідні дані зберігаються в стані; обчислювати їх під час рендера простіше й без зайвого рендера
- 2
useEffectне може викликатиsetState - 3
itemsне має бути залежністю
Пояснення
Ефект спершу рендерить застарілий filtered, а потім ще раз із новим значенням. const filtered = items.filter(...) (з useMemo, якщо дорого) завжди синхронний.