试图显示输入值,但在控制台 reactjs 中没有显示任何错误

时间:2021-02-14 16:08:10

标签: reactjs

我试图显示以下表单中的输入值,但没有任何显示,我所做的是:我编写了代码并修复了每个错误都会立即出现。我认为这将防止任何未来的问题,但它没有奏效。它最终在控制台中没有任何错误 + 不显示输入值

我浏览了多个网站,但没有一个对我有帮助

这是我的代码:

import * as React from "react";
import { useState } from "react";
import { useForm } from "react-hook-form";

function Users(props) {
  const [name, setName] = useState();
  const [username, setUsername] = useState();
  const [surname, setSurname] = useState();
  const [active, setActive] = useState();
  const [currentDepartment, setCurrentDepartment] = useState("");
  const { register, option } = useForm();
  const handleChange = (e) => {
    e.preventDefault();
    console.log(e);
  };
  function handleSubmit(e) {
    e.preventDefault();
    props.setData((prev) => prev.concat({ username, name, surname, active }));
  }

  let password = "MyPA55w()rd";
  let upper_count = 0;
  let lower_count = 0;
  let number_count = 0;
  let symbol_count = 0;
  for (let i = 0; i < password.length; i++) {
    let c = password.charAt(i);

    if ("A" <= c && c <= "Z") {
      upper_count += 1;
    } else if ("a" <= c && c <= "z") {
      lower_count += 1;
    } else if ("0" <= c && c <= "9") {
      number_count += 1;
    } else {
      symbol_count += 1;
    }
  }

  return (
    <form>
      User Name
      <input
        defaultValue={username}
        onChange={(e) => setUsername(e.target.value)}
        type="text"
        placeholder="username"
        name="username"
        ref={register}
      />
      <br />
      Name
      <input
        defaultValue={name}
        onChange={(e) => setName(e.target.value)}
        type="text"
        placeholder="name"
        name="name"
        ref={register}
      />
      <br />
      Surname
      <input
        defaultValue={surname}
        onChange={(e) => setSurname(e.target.value)}
        type="text"
        placeholder="surname"
        name="surname"
        ref={register}
      />
      <br />
      Choose Your Department
      <select defaultValue={currentDepartment}>
        <option value="N/A">Choose Your Department</option>
        <option value="1">Electrical Engineering</option>
        <option value="2">Mechanical Engineering</option>
        <option value="3">Chemical Engineering</option>
        <option value="4">Computer Sciense and Engineering</option>
      </select>
      <br />
      Password
      <input
        defaultValue="{password}"
        type="password"
        placeholder="password"
        name="password"
        ref={register({
          required: true,
          minLength: 8,
          maxLength: 16,
        })}
      />
      <br />
      Profile Picture
      <input type="file" />
      <br />
      Email
      <input type="email" placeholder="email" name="Email" ref={register} />
      <br />
      Day of Start
      <input
        type="date"
        placeholder="dateOfStart"
        name="date of start"
        ref={register}
      />
      <br />
      Birthday
      <input
        defaultValue="Birthday"
        type="date"
        placeholder="Birthday"
        name="Birthday"
        ref={register}
      />
      <br />
      is Active
      <input
        defaultValue={active}
        type="checkbox"
        onChange={(e) => setActive(e.target.value)}
      />
      <button onSubmit={handleSubmit}> Submit </button>
    </form>
  );
}

export default Users;

出现了一些错误,但我修复了所有错误 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

jour JSX 中没有使用 handleChange 函数,你必须像这样 value={stateInput} 绑定每个输入和它的状态值,并用函数 handleChange 绑定 onChange 事件:

示例:

 const handleUserNameChange = (e) => {
    e.preventDefault();
    console.log(e.target.value); //username value
    setUsername(e.target.value);
};

    
  <input
    value={username}
    defaultValue={username}
    onChange={handleUserNameChange}
    type="text"
    placeholder="username"
    name="username"
    ref={register}
/>;

对其他输入重复相同的操作。