- Utilizando o hook useState (tradicional)
 
Arquivo: form.js
import React, { useState } from 'react';
const Form = () => {
  const [nome, setNome] = useState('');
  const [sobrenome, setSobreome] = useState('');
  const submitHandler = e => {
    e.preventDefault();
    alert(`Nome completo: ${nome} ${sobrenome}`);
    setNome('');
    setSobreome('');
  };
  return (
    <div>
      <form onSubmit={submitHandler}>
        <div>
          <label>Nome:</label>
          <input value={nome} onChange={e => setNome(e.target.value)} />
        </div>
        <div>
          <label>Sobrenome:</label>
          <input value={sobrenome} onChange={e => setSobreome(e.target.value)} />
        </div>
        <button type="submit">Submit</button>
      </form>
    </div>
  );
};
export default Form;
- Utilizando o hook useForm (personalizado/custom)
 
Arquivo: useForm.js
import { useState } from 'react';
const useForm = initialValues => {
  const [values, setValues] = useState(initialValues);
  const bind = name => {
    return {
      value: values[name],
      onChange: e => setValues(oldValues => ({ ...oldValues, [name]: e.target.value }))
    };
  };
  const reset = () => {
    setValues(initialValues);
  };
  return [values, bind, reset];
};
export default useForm;
Arquivo: form.js
import React from 'react';
import { useForm } from './useForm';
const Form = () => {
  const [campos, bindCampo, limparCampos] = useForm({ nome: '', sobrenome: '' });
  const submitHandler = e => {
    e.preventDefault();
    alert(`Nome completo: ${campos.nome} ${campos.sobrenome}`);
    limparCampos();
  };
  return (
    <div>
      <form onSubmit={submitHandler}>
        <div>
          <label>Nome:</label>
          <input {...bindCampo('nome')} />
        </div>
        <div>
          <label>Sobrenome:</label>
          <input {...bindCampo('sobrenome')} />
        </div>
        <button type="submit">Submit</button>
      </form>
    </div>
  );
};
export default Form;
Referência(s):
Vixe, entendi nada....
ResponderExcluir