Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import React, { useState, useEffect } from "react";
- import Numbers from "./components/Numbers";
- import Filter from "./components/Filter";
- import PersonForm from "./components/PersonForm";
- import personsService from "./services/persons";
- const App = () => {
- const [persons, setPersons] = useState([]);
- const [id, setID] = useState(4);
- const [newName, setNewName] = useState("");
- const [newNumber, setNewNumber] = useState("");
- const [newNameFilter, setNewNameFilter] = useState("");
- useEffect(() => {
- personsService.getAll().then((initialPersons) => {
- setPersons(initialPersons);
- });
- }, []);
- const addContact = (event) => {
- event.preventDefault();
- const nameObject = {
- name: newName,
- number: newNumber,
- id: setID(id + 1),
- };
- if (persons.some((person) => person.name === nameObject.name)) {
- window.alert(`${nameObject.name} is already added to phonebook`);
- } else {
- personsService
- .create(nameObject)
- .then((returnedPerson) => {
- setPersons(persons.concat(returnedPerson));
- setNewNumber("");
- setNewName("");
- })
- .catch((error) => {
- console.log(error);
- });
- }
- };
- const handleNameChange = (event) => {
- setNewName(event.target.value);
- };
- const handleNumberChange = (event) => {
- setNewNumber(event.target.value);
- };
- const handleNameFilterChange = (event) => {
- setNewNameFilter(event.target.value);
- };
- const deletePerson = (id) => {
- personsService.removePerson().then((returnedPersons) => {
- setPersons(returnedPersons);
- });
- };
- return (
- <div>
- <h2>Phonebook</h2>
- {Filter(newNameFilter, handleNameFilterChange)}
- <h3>Add a New Contact</h3>
- {PersonForm(
- addContact,
- newName,
- handleNameChange,
- newNumber,
- handleNumberChange
- )}
- <h3>Numbers</h3>
- {Numbers(persons, newNameFilter, deletePerson)}
- </div>
- );
- };
- export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement