Mudanças entre as edições de "React.js: Formulários"

De Aulas
(Criou página com 'Afluentes: Desenvolvimento Front-end, Usabilidade, desenvolvimento web, mobile e jogos = Forms React = Os formulários são adicionados como qualquer outro elemento....')
 
Linha 1: Linha 1:
 +
 
Afluentes: [[Desenvolvimento Front-end]], [[Usabilidade, desenvolvimento web, mobile e jogos]]
 
Afluentes: [[Desenvolvimento Front-end]], [[Usabilidade, desenvolvimento web, mobile e jogos]]
  
Linha 22: Linha 23:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Gerenciando os Forms ==
+
= Gerenciando os Forms =
  
 
* Podemos gerenciar em tempo de execução os dados dos formulários quando eles mudam de valor ou são enviados.
 
* Podemos gerenciar em tempo de execução os dados dos formulários quando eles mudam de valor ou são enviados.
Linha 55: Linha 56:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Renderização Condicional ==
+
= Renderização Condicional =
  
 
Podemos usar condicionais para renderizar de forma diferente o HTML.
 
Podemos usar condicionais para renderizar de forma diferente o HTML.
Linha 93: Linha 94:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Submit Forms ==
+
= Submit Forms =
  
 
Você pode controlar o envio de um formulário gerenciando o evento de envio do formulário chamando no atributo <code>onSubmit</code> o método que escrevemos para analizar tratar o evento.
 
Você pode controlar o envio de um formulário gerenciando o evento de envio do formulário chamando no atributo <code>onSubmit</code> o método que escrevemos para analizar tratar o evento.
Linha 130: Linha 131:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Múltiplas entradas de dados ==
+
= Múltiplas entradas de dados =
  
 
Controlamos as múltiplas entradas com o atributo <code>name</code> do campo. Isso vai estar dentro do objeto <code>event</code>. Para alterar um elemento, usamos o método <code>this.setState</code>.
 
Controlamos as múltiplas entradas com o atributo <code>name</code> do campo. Isso vai estar dentro do objeto <code>event</code>. Para alterar um elemento, usamos o método <code>this.setState</code>.

Edição das 13h30min de 27 de fevereiro de 2024

Afluentes: Desenvolvimento Front-end, Usabilidade, desenvolvimento web, mobile e jogos

Forms React

Os formulários são adicionados como qualquer outro elemento.

class MyForm extends React.Component {
  render() {
    return (
      <form>
        <h1>Hello</h1>
        <p>Enter your name:</p>
        <input
          type="text"
        />
      </form>
    );
  }
}
ReactDOM.render(<MyForm />, document.getElementById('root'));

Gerenciando os Forms

  • Podemos gerenciar em tempo de execução os dados dos formulários quando eles mudam de valor ou são enviados.
  • No HTML a gente vê como objetos DOM, no React, os dados são vistos como componentes.
  • Quando um dado é pego por um componente, ele é armazenado no state.
  • Você pode controlar os eventos com o atributo onChange.
class MyForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = { username: '' };
  }
  myChangeHandler = (event) => {
    this.setState({username: event.target.value});
  }
  render() {
    return (
      <form>
      <h1>Hello {this.state.username}</h1>
      <p>Enter your name:</p>
      <input
        type='text'
        onChange={this.myChangeHandler}
      />
      </form>
    );
  }
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Renderização Condicional

Podemos usar condicionais para renderizar de forma diferente o HTML.

Por exemplo, criamos um objeto chamado header em que quando o campo username estiver vazio, ele é renderizado vazio, quando o campo username não estiver vazio, ele coloca outras informações adicionais e coloca dentro de tags de título.

class MyForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = { username: '' };
  }
  myChangeHandler = (event) => {
    this.setState({username: event.target.value});
  }
  render() {
    let header = '';
    if (this.state.username) {
      header = <h1>Hello {this.state.username}</h1>;
    } else {
      header = '';
    }
    return (
      <form>
      {header}
      <p>Enter your name:</p>
      <input
        type='text'
        onChange={this.myChangeHandler}
      />
      </form>
    );
  }
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Submit Forms

Você pode controlar o envio de um formulário gerenciando o evento de envio do formulário chamando no atributo onSubmit o método que escrevemos para analizar tratar o evento.

class MyForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = { username: '' };
  }
  mySubmitHandler = (event) => {
    event.preventDefault();
    alert("You are submitting " + this.state.username);
  }
  myChangeHandler = (event) => {
    this.setState({username: event.target.value});
  }
  render() {
    return (
      <form onSubmit={this.mySubmitHandler}>
      <h1>Hello {this.state.username}</h1>
      <p>Enter your name, and submit:</p>
      <input
        type='text'
        onChange={this.myChangeHandler}
      />
      <input
        type='submit'
      />
      </form>
    );
  }
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

Múltiplas entradas de dados

Controlamos as múltiplas entradas com o atributo name do campo. Isso vai estar dentro do objeto event. Para alterar um elemento, usamos o método this.setState.

class MyForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      username: '',
      age: null,
    };
  }
  myChangeHandler = (event) => {
    let nam = event.target.name;
    let val = event.target.value;
    this.setState({[nam]: val});
  }
  render() {
    return (
      <form>
      <h1>Hello {this.state.username} {this.state.age}</h1>
      <p>Enter your name:</p>
      <input
        type='text'
        name='username'
        onChange={this.myChangeHandler}
      />
      <p>Enter your age:</p>
      <input
        type='text'
        name='age'
        onChange={this.myChangeHandler}
      />
      </form>
    );
  }
}

ReactDOM.render(<MyForm />, document.getElementById('root'));

O código acima sendo usado no App.js da estrutura de projeto do React.js fica da seguinte forma:

import './App.css';
import { Component } from 'react';

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      username: '',
      age: null,
    };
  }
  myChangeHandler = (event) => {
    let nam = event.target.name;
    let val = event.target.value;
    this.setState({ [nam]: val });
  }
  render() {
    return (
      <form>
        <h1>Hello {this.state.username} {this.state.age}</h1>
        <p>Enter your name:</p>
        <input
          type='text'
          name='username'
          onChange={this.myChangeHandler}
        />
        <p>Enter your age:</p>
        <input
          type='text'
          name='age'
          onChange={this.myChangeHandler}
        />
      </form>
    );
  }
}

export default App;