Это на самом деле компромиссное решение.
Я предполагаю, что в вашей функции обработчика событий вы вызываете React setState()
для обновления ваших состояний.
Вызов setState является асинхронным.Это создает «ожидающий переход состояния».(Подробнее см. здесь ).Это действительно быстро и имеет редуктор для обновления только измененных узлов.Так что вам не нужно думать о производительности.
- Выберите
onChange()
: если вам нужно последнее состояние сразу после изменения ввода, например:
Поиск предложений после каждого ввода (например, окно поиска Google)
Проверка ввода после каждого изменения
- Выбор
onBlur()
: если вам нужно только последнее состояние в конце конечного ввода, например:
Каждое изменение вызывает событие извлечения, которое проверяет, существует ли введенное имя пользователя или адрес электронной почты
Также подумайте об этом сценарии:
Ваш пользователь заполнил все 3 регистрационных ввода (имя, пароль, электронная почта), но после последнего ввода электронной почты он / она непосредственно нажал кнопку отправки (при этом ваш метод регистрации запускался без обновления состояния электронной почты).Поскольку setState является асинхронным и еще не обновил состояние электронной почты, у вас могут возникнуть проблемы с нулевым вводом электронной почты.
Итак, мое неофициальное предложение заключается в том, что используйте onChange, когда это возможно, используйте onBlur, когда вам нужно.