Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Limpando os Campos do formulário

O código abaixo é o da minha classe FormularioCadastro estou tentando limpar os campos após enviar tentei usando o setState e o campo realmente ficou vazio só que apenas na logica, visualmente o texto ainda continua no formulario.

import React, { Component } from "react";
import "./estilo.css";
class FormularioCadastro extends Component {
  constructor(props){
    super(props);
    this.state = {
      title: "",
      texto: ""
    }
  }
  _handleMudancaTitulo(event){
    event.stopPropagation();
    this.state.title = event.target.value;
  }
  _handleMudancaTexto(event){
    event.stopPropagation();
    this.state.texto = event.target.value;
  }
  _criarNota(event){
    if(this.state.title.length == 0){
      this.state.title = "Sem titulo";
    }
    if(this.state.texto.length == 0){
      this.state.texto = "Não sei por que você faria isso mas criou uma notação vazia :/" 
    }
    event.stopPropagation();
    event.preventDefault();
    this.props.criarNota(this.state.title, this.state.texto);
    this.setState({title: "", texto: ""});
  }
  render() {
    return (
      <form className="form-cadastro "
        onSubmit ={this._criarNota.bind(this)}
      >
        <input
          type="text"
          placeholder="Título"
          className="form-cadastro_input"
          onChange={this._handleMudancaTitulo.bind(this)}
        />
        <textarea
          rows={15}
          placeholder="Escreva sua nota..."
          className="form-cadastro_input"
          onChange={this._handleMudancaTexto.bind(this)}
        />
        <button className="form-cadastro_input form-cadastro_submit">
          Criar Nota
        </button>
      </form>
    );
  }
}

export default FormularioCadastro;
1 resposta
solução!

Boa tarde Iago, tudo bem?

Neste caso para sua logica funcionar vc precisa utilizar os campos como componentes controlados, ou seja, deve passar o seu estado no atributo "value" dos campos. Algo como:

<input
    type="text"
    placeholder="Título"
    className="form-cadastro_input"
    onChange={this._handleMudancaTitulo.bind(this)}
    value={this.state.title}
/>

Com os "componentes controlados" fazemos o React ser a “única fonte da verdade”. Aqui tem o link com uma explicação mais completa da documentação do React - componentes controlados.

Espero ter ajudado :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software