О useEffect
hook:
Используя этот хук, вы сообщаете React, что ваш компонент должен что-то делать после рендеринга.React запомнит переданную вами функцию (мы будем называть ее «эффектом») и вызовет ее позже после выполнения обновлений DOM. more
Это означает, что функция внутри useEffect
будет вызываться после рендеринга компонента.Вот почему у вас есть пустой объект.
Об ошибке.У вас это есть, потому что React не запоминает вашу переменную users
- она будет воссоздана при каждом рендере компонента SetValue
.Будет лучше использовать хук useState
для установки значения в useEffect
и запомнить его при следующем рендере.
И еще одна заметка.Не забудьте передать второй аргумент в useEffect
с массивом зависимостей.Теперь ваш хук будет вызываться после каждого рендера компонента SetValue
.
Вот как использовать useState
hook:
import React, { useState, useEffect } from 'react';
function SetValue(props){
const [users, setUsers] = useState({});
useEffect(() => {
setUsers({ user: 'bob' });
}, [
//here you could pass dependencies, or leave it empty to call this effect only on first render
]);
return <NewComponent users={users} />
}
export default SetValue;