Можно заметить что onChange не возвращает текущий введенный символ в событие.
в событии есть последний введенный символ, его нет в стейте
сразу после вызова setState
handleChange(event) {
this.setState({value: event.target.value});
console.log(this.state.value);
}
метод setState асинхронный, и принимает вторым параметром колбэк
если делать вот так, то все будет норм
handleChange(event) {
this.setState({value: event.target.value}, () => console.log(this.state.value));
}
не вижу никаких проблем с валидацией