React · Middle · Frage 12 von 75
Warum läuft dieser Effekt nach jedem Rendering?
const options = { roomId, serverUrl };
useEffect(() => {
const conn = connect(options);
return () => conn.close();
}, [options]);- 1
optionsist bei jedem Rendern ein neues Objekt - 2Weil
connecteine asynchrone Funktion ist, die ein Promise zurückgibt - 3Objekte in den Abhängigkeiten lassen den Effekt immer neu laufen
Antwort zeigen
Richtige Antwort: options ist bei jedem Rendern ein neues Objekt
Erklärung
Abhängigkeiten werden per Object.is verglichen, und ein neues Objektliteral ist nie gleich dem vorherigen. Richtig ist, das Objekt im Effekt zu erzeugen und von Primitiven abzuhängen: [roomId, serverUrl]. Den Linter zu unterdrücken ist eine schlechte Idee.