Bawiłem się nowym systemem przechwytywania w React 16.7-alpha i utknąłem w nieskończonej pętli w useEffect, gdy obsługiwany stan jest obiektem lub tablicą.
Najpierw używam useState i inicjuję go z pustym obiektem, takim jak ten:
const [obj, setObj] = useState({});
Następnie w useEffect używam setObj, aby ponownie ustawić go na pusty obiekt. Jako drugi argument podaję [obj], mając nadzieję, że nie zaktualizuje się, jeśli zawartość obiektu nie uległa zmianie. Ale ciągle się aktualizuje. Wydaje mi się, że niezależnie od treści, zawsze są to różne obiekty, przez co React myśli, że ciągle się zmienia?
useEffect(() => {
setIngredients({});
}, [ingredients]);
To samo dotyczy tablic, ale jako prymityw nie utknie w pętli, zgodnie z oczekiwaniami.
Korzystając z tych nowych punktów zaczepienia, jak mam obsługiwać obiekty i tablicę podczas sprawdzania, czy zawartość uległa zmianie, czy nie?