Olá, após ver o método utilizado para a validação dos campos acabei ficando na dúvida se nesse exemplo não seria mais prático e funcional utilizar a validação no próprio HTML da pagina ? Transformando o Botão de enviar em Submit e capturando o evento no Form, parece ser uma maneira muito mais simples e bem menos confusa do que a utilizada no curso.
render() {
const { nome, livro, preco } = this.state;
return (
<form onSubmit={this._submitForm}>
<div className="row">
<div className="input-field col s4">
<input
id="nome"
type="text"
name="nome"
value={nome}
onChange={this.inputListener}
className="validate"
required
/>
<label htmlFor="nome" >Nome do Autor</label>
</div>
<div className="input-field col s4">
<input
id="livro"
type="text"
name="livro"
value={livro}
onChange={this.inputListener}
className="validate"
required
/>
<label htmlFor="livro" >Nome do Livro</label>
</div>
<div className="input-field col s4">
<input
id="preco"
type="number"
name="preco"
value={preco}
onChange={this.inputListener}
min="0.00"
max="9999.00"
className="validate"
required
/>
<label htmlFor="preco">Preço</label>
</div>
</div>
<button type="submit" className="waves-effect waves-light indigo lighten-2 btn">Salvar
</button>
</form>
)
};