React · Middle · Pytanie 51 z 75
Co jest nie tak z tym efektem?
const [filtered, setFiltered] = useState([]);
useEffect(() => {
setFiltered(items.filter((i) => i.visible));
}, [items]);- ✓Poprawna odpowiedź: Przechowuje dane pochodne w stanie; obliczanie ich podczas renderu jest prostsze i unika dodatkowego renderu
- 2
useEffectnie może wywoływaćsetState - 3
itemsnie powinno być zależnością
Wyjaśnienie
Efekt najpierw renderuje nieaktualne filtered, a potem jeszcze raz z nową wartością. const filtered = items.filter(...) (z useMemo, jeśli kosztowne) jest zawsze zsynchronizowane.