React · Middle · Запитання 12 з 75

Чому цей ефект виконується після кожного рендеру?

const options = { roomId, serverUrl };

useEffect(() => {
  const conn = connect(options);
  return () => conn.close();
}, [options]);

Пояснення

Залежності порівнюються через Object.is, а новий об'єктний літерал ніколи не дорівнює попередньому. Правильно - створити об'єкт усередині ефекту й залежати від примітивів: [roomId, serverUrl]. Придушувати лінтер - погана ідея.

Де почитати

Помилка в запитанні

React · Middle · запитання 12

Перевірте себе

Пройдіть тест React · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест