React Hook-登录表单

用React Hook写一个简单的登录表单示例,两种方式:
第一种:


import React, { useState } from "react";
import ReactDOM from "react-dom";
function LoginForm() {
  const [username, setUsername] = useState('');
  const [password, setPassword] = useState('');

  const printValues = e => {
    e.preventDefault();
    console.log(username, password);
  };

  return (
    <form onSubmit={printValues}>
      <label>
        Username:
        <input
          value={username}
          onChange={event => setUsername(event.target.value)}
          name="username"
          type="text"
        />
      </label>
      <br />
      <label>
        Password:
        <input
          value={password}
          onChange={event => setPassword(event.target.value)}
          name="password"
          type="password"
        />
      </label>
      <br />
      <button>Submit</button>
    </form>
  );
}
ReactDOM.render(<LoginForm />, document.getElementById("container"));
 

 

第二种:

这里的setState函数只是一个更新函数的名字,所以随你心意,不一定叫setState
import React, { useState } from "react";
import ReactDOM from "react-dom";
function LoginForm() {
  const [form, setState] = useState({
    username: "",
    password: ""
  });

  const printValues = e => {
    e.preventDefault();
    console.log(form.username, form.password);
  };

  const updateField = e => {
    setState({
      ...form,
      [e.target.name]: e.target.value
    });
  };

  return (
    <form onSubmit={printValues}>
      <label>
        Username:
        <input value={form.username} name="username" onChange={updateField} />
      </label>
      <br />
      <label>
        Password:
        <input
          value={form.password}
          name="password"
          type="password"
          onChange={updateField}
        />
      </label>
      <br />
      <button>Submit</button>
    </form>
  );
}
ReactDOM.render(<LoginForm />, document.getElementById("container"));

posted on 2019-12-30 17:24  寒林白雨  阅读(2331)  评论(0)    收藏  举报