React · Middle · Запитання 53 з 75
Чому цей ефект чату перепідключається під час зміни теми?
useEffect(() => {
const conn = connect(roomId);
conn.on("connected", () => showToast("Connected", theme));
return () => conn.disconnect();
}, [roomId, theme]);- ✓Правильна відповідь:
themeчитається всередині ефекту, тож це залежність; винесіть нереактивну частину вuseEffectEvent - 2Ефекти завжди перезапускаються за зміни будь-якого стану
- 3
showToastтреба обгорнути вuseMemo
Пояснення
Кожне реактивне значення, що використовується в ефекті, має бути в списку. useEffectEvent дає обробнику змогу читати свіжий theme, не роблячи ефект залежним від нього.