React · Middle · Pytanie 12 z 75

Dlaczego ten efekt wykonuje się po każdym renderze?

const options = { roomId, serverUrl };

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

Wyjaśnienie

Zależności porównuje się przez Object.is, a nowy literał obiektu nigdy nie jest równy poprzedniemu. Poprawnie jest utworzyć obiekt wewnątrz efektu i zależeć od prymitywów: [roomId, serverUrl]. Wyciszanie lintera to zły pomysł.

Do poczytania

Błąd w pytaniu

React · Middle · pytanie 12

Sprawdź się

Rozwiąż test React · Middle: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test