代码之家  ›  专栏  ›  技术社区  ›  yudhiesh

如何阻止用户添加已经存在的名称?

  •  1
  • yudhiesh  · 技术社区  · 6 年前

    https://github.com/yudhiesh1997/fullstackopen/tree/master/part2/phonebook

    import React, { useState } from "react";
    import { v4 as uuidv4 } from "uuid";
    const PersonForm = ({ addPerson, persons }) => {
      const [info, setInfo] = useState({
        name: "",
        number: "",
        id: "",
      });
    
      const handleInputChange = (event) => {
        setInfo({ ...info, [event.target.name]: event.target.value });
      };
      const handleSubmit = (event) => {
        const form = event.target;
        event.preventDefault();
        if (event.target.name === persons.map((person) => person.name)) {
          alert("Name exist");
        }
        addPerson({
          ...info,
          id: uuidv4(),
        });
        setInfo({ ...info, name: "", number: "" });
        form.reset();
      };
    
      return (
        <div>
          <form onSubmit={handleSubmit}>
            Name: <input type="text" name="name" onChange={handleInputChange} />
            <br />
            Number:
            <input type="number" name="number" onChange={handleInputChange} />
            <button type="submit">Add</button>
          </form>
        </div>
      );
    };
    
    export default PersonForm;
    
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Vladislav Kirilenok    6 年前

        const form = event.target;
        event.preventDefault();
        if (persons.some((person) => person.name === event.target.name)) {
          alert("Name exist");
          return
        }
        addPerson({
          ...info,
          id: uuidv4(),
        });
        setInfo({ ...info, name: "", number: "" });
        form.reset();
      };```
    
        2
  •  0
  •   yudhiesh    6 年前

    好的,感谢您指出将数组与单个名称进行比较的错误

    const handleSubmit = (event) => {
        const form = event.target;
        event.preventDefault();
        if (persons.map((person) => person.name === info.name).length > 0) {
          alert("Name exist");
          form.reset();
          return;
        }
        addPerson({
          ...info,
          id: uuidv4(),
        });
        setInfo({ name: "", number: "" });
        form.reset();
      };