#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}))