Установите элементы массива в состояние react js

#reactjs

Вопрос:

Здесь у меня есть состояние, начальное значение которого-пустой объект.

 const [error, setError] = useState({});  

На следующем шаге я проверяю, есть ли свободный вход, установите его ключ в состояние ошибки :

 if (emptyInputs.length) {  emptyInputs.forEach(key =gt; setError({ ...error, [key]: true }));  

но только одно из пустых входных имен указывает на мое состояние ошибки:

введите описание изображения здесь

есть ли кто-нибудь, кто сталкивается с этой проблемой?

Комментарии:

1. Сначала не предоставляйте фрагмент кода в виде изображения, вместо этого предоставьте их в виде реального фрагмента кода. Затем укажите данные, которые вы получаете от emptyInputs ..

2. Вот ты где. Я изменил свой ответ

3. Не могли бы вы предоставить данные emptyInputs

Ответ №1:

Когда вы просматриваете ввод пустых данных для каждого элемента, которому вы присваиваете новый объект в состояние ошибки, из-за этого вы теряете предыдущее состояние/ключ, прежде всего, вам придется скопировать предыдущий объект, чтобы сохранить его значения, а затем назначить новый ключ таким образом.

Это рекомендуемый способ установки состояния, если ваше состояние зависит от предыдущего состояния.

 emptyInputs.forEach(key =gt; setError(prevState =gt; ({...prevState, [key]: true})))  

Это не рекомендуемый способ обновления состояния подобным образом, потому что этот способ не гарантирует получение последнего состояния для каждого обновления, если ваше состояние меняется очень часто.

 emptyInputs.forEach(key =gt; setError({...error, [key]: true}))