React · Middle · Pytanie 53 z 75
Dlaczego ten efekt czatu łączy się ponownie przy zmianie motywu?
useEffect(() => {
const conn = connect(roomId);
conn.on("connected", () => showToast("Connected", theme));
return () => conn.disconnect();
}, [roomId, theme]);- ✓Poprawna odpowiedź:
themejest czytane wewnątrz efektu, więc jest zależnością; wydziel niereaktywną część douseEffectEvent - 2Efekty zawsze uruchamiają się ponownie przy zmianie dowolnego stanu
- 3
showToasttrzeba owinąć wuseMemo
Wyjaśnienie
Każda reaktywna wartość używana w efekcie musi być na liście. useEffectEvent pozwala handlerowi czytać najnowsze theme, nie uzależniając od niego efektu.