setState()
витримує зміни у стані компонента та повідомляє React, що цей компонент та його дочірні елементи повинні бути повторно відтворені з оновленим станом.
setState метод є асинхронним, і насправді він не повертає обіцянку. Отже, у випадках, коли ми хочемо оновити або викликати функцію, функцію можна викликати зворотним викликом у функції setState як другий аргумент. Наприклад, у вашому випадку вище, ви викликали функцію як зворотний виклик setState.
setState(
{ name: "Michael" },
() => console.log(this.state)
);
Наведений вище код чудово працює для компонента класу, але у випадку функціонального компонента ми не можемо використовувати метод setState, і це може використовувати хук ефекту використання для досягнення того самого результату.
Очевидний метод, який приходить на думку, полягає в тому, що ypu можна використовувати з useEffect, як показано нижче:
const [state, setState] = useState({ name: "Michael" })
useEffect(() => {
console.log(state)
}, [state])
Але це також спрацьовує на першому візуалізації, тому ми можемо змінити код наступним чином, де ми можемо перевірити першу подію візуалізації та уникнути стану візуалізації. Тому реалізацію можна здійснити наступним чином:
Тут ми можемо використати хук користувача для ідентифікації першого візуалізації.
Хук useRef дозволяє нам створювати змінні змінні у функціональних компонентах. Це корисно для доступу до DOM-вузлів / елементів React та для зберігання змінних змінних, не викликаючи повторного відтворення.
const [state, setState] = useState({ name: "Michael" });
const firstTimeRender = useRef(true);
useEffect(() => {
if (!firstTimeRender.current) {
console.log(state);
}
}, [state])
useEffect(() => {
firstTimeRender.current = false
}, [])