Вы можете уменьшить этот код до,
handleOnChange = (e) => {
const { value } = e.target
const isAlphanumeric = /^[a-z0-9]+$/i.test(value)
const isSixCharactersLong = value && value.length === 6
const inputIsBlank = !!value // or Boolean(value)
this.setState({ isAlphanumeric, isSixCharactersLong, inputIsBlank })
if (!inputIsBlank && isAlphanumeric && isSixCharactersLong)
this.setState({ code: value })
}
/^[a-z0-9]+$/i
: регулярное выражение для проверки буквенно-цифровых символов без учета регистра
!!
: введите приведение к логическому значению, т. Е. Если значение пусто, оно будет ложным, двойное отрицание превращает его в истинное значение и возвращает обратно к false
Редактировать
В соответствии с обсуждением в комментариях, чтобы установить code
, только если ввод действителен, я добавил оператор if, который по существу транслируется в, если значение не пустое (!inputIsBlank
) и если значение является буквенно-цифровым, и если длина ввода составляет шесть символов, тогда установите code
в value
.