Я бавився з новою системою гачків у React 16.7-alpha і застряг у нескінченному циклі useEffect, коли стан, яким я обробляю, є об'єктом або масивом.
По-перше, я використовую useState і ініціюю його з таким порожнім об'єктом:
const [obj, setObj] = useState({});
Потім, у useEffect, я використовую setObj, щоб знову встановити його в порожній об'єкт. В якості другого аргументу я передаю [obj], сподіваючись, що він не буде оновлюватися, якщо вміст об'єкта не змінився. Але воно постійно оновлюється. Я думаю, оскільки незалежно від змісту, це завжди різні об’єкти, що змушують React думати, що він постійно змінюється?
useEffect(() => {
setIngredients({});
}, [ingredients]);
Те саме стосується масивів, але як примітив він не застряє в петлі, як очікувалося.
За допомогою цих нових гачків, як мені обробляти об’єкти та масив, перевіряючи, чи змінився вміст чи ні?