Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from "react";
  2. import Numbers from "./components/Numbers";
  3. import Filter from "./components/Filter";
  4. import PersonForm from "./components/PersonForm";
  5. import personsService from "./services/persons";
  6.  
  7. const App = () => {
  8.   const [persons, setPersons] = useState([]);
  9.   const [id, setID] = useState(4);
  10.   const [newName, setNewName] = useState("");
  11.   const [newNumber, setNewNumber] = useState("");
  12.   const [newNameFilter, setNewNameFilter] = useState("");
  13.  
  14.   useEffect(() => {
  15.     personsService.getAll().then((initialPersons) => {
  16.       setPersons(initialPersons);
  17.     });
  18.   }, []);
  19.  
  20.   const addContact = (event) => {
  21.     event.preventDefault();
  22.     const nameObject = {
  23.       name: newName,
  24.       number: newNumber,
  25.       id: setID(id + 1),
  26.     };
  27.  
  28.     if (persons.some((person) => person.name === nameObject.name)) {
  29.       window.alert(`${nameObject.name} is already added to phonebook`);
  30.     } else {
  31.       personsService
  32.         .create(nameObject)
  33.         .then((returnedPerson) => {
  34.           setPersons(persons.concat(returnedPerson));
  35.           setNewNumber("");
  36.           setNewName("");
  37.         })
  38.         .catch((error) => {
  39.           console.log(error);
  40.         });
  41.     }
  42.   };
  43.  
  44.   const handleNameChange = (event) => {
  45.     setNewName(event.target.value);
  46.   };
  47.   const handleNumberChange = (event) => {
  48.     setNewNumber(event.target.value);
  49.   };
  50.   const handleNameFilterChange = (event) => {
  51.     setNewNameFilter(event.target.value);
  52.   };
  53.  
  54.   const deletePerson = (id) => {
  55.     personsService.removePerson().then((returnedPersons) => {
  56.       setPersons(returnedPersons);
  57.     });
  58.   };
  59.  
  60.   return (
  61.     <div>
  62.       <h2>Phonebook</h2>
  63.       {Filter(newNameFilter, handleNameFilterChange)}
  64.       <h3>Add a New Contact</h3>
  65.       {PersonForm(
  66.         addContact,
  67.         newName,
  68.         handleNameChange,
  69.         newNumber,
  70.         handleNumberChange
  71.       )}
  72.       <h3>Numbers</h3>
  73.       {Numbers(persons, newNameFilter, deletePerson)}
  74.     </div>
  75.   );
  76. };
  77.  
  78. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement