Koliadjun / goit-react-hw-07-phonebook

Home Page:http://koliadjun.github.io/goit-react-hw-07-phonebook/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Телефонна книга

Напиши додаток зберігання контактів телефонної книги.

Крок 1

Додаток має складатися з форми і списку контактів. На поточному етапі реалізуй додавання імені контакту та відображення списку контактів. Додаток не має зберігати контакти між різними сесіями (оновлення сторінки).

Стан зберігається в батьківському компоненті <App> обов'язково має бути наступного виду, додавати нові властивості не можна.

state = {
  contacts: [],
  name: ''
}

Кожен контакт повинен бути об'єктом з властивостями name і id. Для генерації ідентифікаторів використовуй будь-який відповідний пакет, наприклад uuid. Після завершення цього кроку, додаток повинен виглядати приблизно так.

preview

Крок 2

Розшир функціонал додатка, дозволивши користувачам додавати номера телефонів. Для цього додай другий інпут в форму, і властивість для зберігання його значення в стані.

state = {
  contacts: [],
  name: '',
  number: ''
}

Після завершення цього кроку, додаток повинен виглядати приблизно так.

preview

Крок 3

Додай поле пошуку, яке можна використовувати для фільтрації списку контактів по імені.

  • Поле пошуку це інпут без форми, значення якого записується в стан (контрольований елемент).
  • Логіка фільтрації повинна бути нечутлива до регістру.
state = {
  contacts: [],
  filter: '',
  name: '',
  number: ''
}

preview

Коли ми працюємо над новим функціоналом, буває зручно жорстко закодувати деякі дані в стан. Це позбавить від необхідності вручну вводити дані в інтерфейсі для тестування роботи нового функціоналу. Наприклад можна використовувати таке початковий стан.

state = {
  contacts: [
    {id: 'id-1', name: 'Rosie Simpson', number: '459-12-56'},
    {id: 'id-2', name: 'Hermione Kline', number: '443-89-12'},
    {id: 'id-3', name: 'Eden Clements', number: '645-17-79'},
    {id: 'id-4', name: 'Annie Copeland', number: '227-91-26'},
  ],
  filter: '',
  name: '',
  number: ''
}

Крок 4

Якщо твій додаток реалізовано в одному компоненті <App>, виконай рефакторинг, виділивши відповідні частини в окремі компоненти. В стані кореневого компонента <App> залишаться тільки властивості contacts і filter.

state = {
  contacts: [],
  filter: ''
}

Досить виділити чотири компоненти: форма додавання контактів, список контактів, елемент списку контактів і фільтр пошуку.

Після рефакторинга кореневий компонент додатка буде виглядати так.

<div>
  <h1>Phonebook</h1>
  <ContactForm ... />

  <h2>Contacts</h2>
  <Filter ... />
  <ContactList ... />
</div>

Крок 5

Заборони користувачеві можливість додавати контакти, імена яких вже є в телефонній книзі. При спробі виконати таку дію виведи alert з попередженням.

preview

Крок 6

Розшир функціонал додатка, дозволивши користувачеві видаляти раніше збережені контакти.

preview

About

http://koliadjun.github.io/goit-react-hw-07-phonebook/


Languages

Language:JavaScript 73.6%Language:CSS 14.5%Language:HTML 11.5%Language:Shell 0.4%