Disabled - логическое свойство, означающее, что оно может иметь только значение true или false. Вместо логического значения ваша функция validate возвращает объект, поэтому React выдает ошибку «Invalid value». Чтобы это исправить, вы можете проверить, является ли результат this.validate
нулевым:
<button
disabled={(this.validate() !== null)}
className="btn btn-primary"
>
Login
</button>
Кроме того, вы вообще забыли назвать свой this.validate
:)
Относительно " Максимальная глубина обновления ... ", вы должны удалить this.setState
из this.validate
, потому что вы уже помещаете ошибку в состояние в методе handleChange
.