Используйте состояние с массивом, дающим нечетные результаты

#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]);