GithubHelp home page GithubHelp logo

eujinnlucashow / goit-react-hw-03-phonebook Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 4.06 MB

⚛️goit-react-hw-03-phonebook

Home Page: https://eujinnlucashow.github.io/goit-react-hw-03-phonebook/

HTML 33.90% JavaScript 60.55% CSS 5.56%
react

goit-react-hw-03-phonebook's Introduction

Використовуй цей шаблон React-проекту як стартову точку своєї програми.

Критерії приймання

  • Створені репозиторії goit-react-hw-03-phonebook и goit-react-hw-03-image-finder
  • При здачі домашньої роботи є посилання: на вихідні файли та робочу сторінку проектів на GitHub Pages.
  • У стані компонентів зберігається мінімально необхідний набір даних, решта обчислюється
  • Під час запуску коду завдання в консолі відсутні помилки та попередження.
  • Для кожного компонента є окрема папка з файлом React-компонента та файлом стилів
  • Для компонентів описані propTypes
  • Все, що компонент очікує у вигляді пропсів, передається йому під час виклику.
  • Імена компонентів зрозумілі та описові
  • JS-код чистий і зрозумілий, використовується Prettier.
  • Стилізація виконана CSS-модулями або Styled Components.

Завдання

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

Візьми своє рішення завдання з попередньої домашньої роботи і додай зберігання контактів телефонної книги в localStorage. Використовуй методи життєвого циклу.

  • Під час додавання та видалення контакту контакти зберігаються у локальне сховище.
  • Під час завантаження застосунку контакти, якщо такі є, зчитуються з локального сховища і записуються у стан.

Пошук зображень

Напиши застосунок пошуку зображень за ключовим словом. Прев'ю робочого застосунку дивись за посиланням.

Створи компоненти <Searchbar>, <ImageGallery>, <ImageGalleryItem>, <Loader>, <Button> і <Modal>. Готові стилі компонентів можна взяти у файлі styles.css і підправити під себе, якщо потрібно.

preview

Інструкція Pixabay API

Для HTTP-запитів використовуй публічний сервіс пошуку зображень Pixabay. Зареєструйся та отримай приватний ключ доступу.

URL-рядок HTTP-запиту.

https://pixabay.com/api/?q=cat&page=1&key=your_key&image_type=photo&orientation=horizontal&per_page=12

Pixabay API підтримує пагінацію, за замовчуванням параметр page дорівнює 1. Нехай у відповіді надходить по 12 об'єктів, встановлено в параметрі per_page. Не забудь, що під час пошуку за новим ключовим словом, необхідно скидати значення page до 1.

У відповіді від апі приходить масив об'єктів, в яких тобі цікаві лише наступні властивості.

  • id – унікальний ідентифікатор
  • webformatURL – посилання на маленьке зображення для списку карток
  • largeImageURL – посилання на велике зображення для модального вікна

Опис компонента <Searchbar>

Компонент приймає один проп onSubmit – функцію для передачі значення інпута під час сабміту форми. Створює DOM-елемент наступної структури.

<header class="searchbar">
  <form class="form">
    <button type="submit" class="button">
      <span class="button-label">Search</span>
    </button>

    <input
      class="input"
      type="text"
      autocomplete="off"
      autofocus
      placeholder="Search images and photos"
    />
  </form>
</header>

Опис компонента <ImageGallery>

Список карток зображень. Створює DOM-елемент наступної структури.

<ul class="gallery">
  <!-- Набір <li> із зображеннями -->
</ul>

Опис компонента <ImageGalleryItem>

Компонент елемента списку із зображенням. Створює DOM-елемент наступної структури.

<li class="gallery-item">
  <img src="" alt="" />
</li>

Опис компонента <Button>

При натисканні на кнопку Load more повинна довантажуватись наступна порція зображень і рендеритися разом із попередніми. Кнопка повинна рендеритися лише тоді, коли є якісь завантажені зображення. Якщо масив зображень порожній, кнопка не рендериться.

Опис компонента <Loader>

Компонент спінера відображається, доки відбувається завантаження зображень. Використовуйте будь-який готовий компонент, наприклад react-loader-spinner або будь-який інший.

Опис компонента <Modal>

Під час кліку на елемент галереї повинно відкриватися модальне вікно з темним оверлеєм і відображатися велика версія зображення. Модальне вікно повинно закриватися по натисканню клавіші ESC або по кліку на оверлеї.

Зовнішній вигляд схожий на функціонал цього VanillaJS-плагіна, тільки замість білого модального вікна рендериться зображення (у прикладі натисніть Run). Анімацію робити не потрібно!

<div class="overlay">
  <div class="modal">
    <img src="" alt="" />
  </div>
</div>

goit-react-hw-03-phonebook's People

Contributors

eujinnlucashow avatar

Stargazers

 avatar

Watchers

 avatar

goit-react-hw-03-phonebook's Issues

componentDidUpdate

Смотри что нарыл в GPT 😅

componentDidUpdate(_, prevState) - это перемога!

В JavaScript и во многих фреймворках, включая React, принято использовать нижнее подчеркивание (underscore) в качестве конвенции для обозначения аргумента, который не будет использоваться в функции или методе.

В методе componentDidUpdate первый параметр, обычно называемый prevProps, содержит предыдущие значения свойств компонента, которые были переданы до обновления. Однако, если в данном методе не требуется использовать предыдущие пропсы, разработчики часто используют нижнее подчеркивание в качестве плейсхолдера для неиспользуемого параметра. Это помогает подчеркнуть факт, что параметр не имеет значения или не используется в данной функции.

Таким образом, использование нижнего подчеркивания вместо имени переменной является просто соглашением и помогает читателям кода понять, что значение этого параметра не используется внутри метода componentDidUpdate.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.