#javascript #arrays #reactjs #react-hooks #use-state
Вопрос:
Я столкнулся с проблемой с реакцией useState
с массивами, это моя teamMembers
декларация состояния:
const [teamMembers, setTeam] = useState();
…и я заполняю форму и, по нажатию кнопки, обновляю teamMembers
состояние. приведенный ниже код находится внутри обработчика:
let newTeam = teamMembers || ['Tony Stark']; console.log(newTeam); // here it is giving me Tony Stark setTeam(newTeam);
Я привык useEffect
видеть обновление:
useEffect(() =gt; { console.log(teamMembers); // here it is giving me empty array([]) })
Чего мне не хватает?
Ответ №1:
Сначала следует установить значение в пустой массив:
const [teamMembers, setTeam] = useState([])
Затем:
useEffect(() =gt; { console.log(teamMembers) }, [teamMembers])
Если массив когда-либо изменится useEffect
, будет зарегистрирован пустой массив.
Думаю, ты пытаешься это сделать:
const [teamMembers, setTeam] = useState([]) setTeam([...teamMembers, 'Tony stark']) useEffect(() =gt; { console.log(teamMembers) }, [teamMembers])
Ответ №2:
исправление в третьем блоке может сработать:
useEffect(() =gt; { console.log(teamMembers); // here it is giving me empty array([]) },[teamMembers]);