Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yuriyvyatkin/ra-hw-2.3-dropdown

ДЗ №3 к лекции «События и состояние» курса «React» Нетологии
https://github.com/yuriyvyatkin/ra-hw-2.3-dropdown

lifting-up-state reactjs usestate

Last synced: about 1 month ago
JSON representation

ДЗ №3 к лекции «События и состояние» курса «React» Нетологии

Awesome Lists containing this project

README

        

# Домашнее задание №3 к лекции «События и состояние»

[![Build status](https://ci.appveyor.com/api/projects/status/3kkio0uev2bd31j1?svg=true)](https://ci.appveyor.com/project/yuriyvyatkin/ra-hw-2-3-dropdown)

[Ссылка на Github Pages](https://yuriyvyatkin.github.io/ra-hw-2.3-dropdown/)

Выпадающий список
===

Вам необходимо реализовать компоненты выпадающего списка.

## Описание проекта

![Выпадающий список](./assets/dropdown.png)

Реализуйте компонент `DropdownList`, аналогичный указанному на рисунке. Для позиционирования выпадающего списка воспользуйтес контейнером с `position: relatvie`. Для простоты будем считать, что размер кнопки, при нажатии на которой показывается выпадающий список - фиксированного размера (соответственно, вам не нужно через DOM API вычислять размеры и отступы).

Структура компонентов:
- `Dropdown` - содержит кнопку и `DropdownList` (внутри себя хранит состояние, показывать или нет выпадающий список)
- `DropdownList` - содержит список `DropdownItem`'ов, и хранит информацию о текущем выбранном элементе.

Вам нужно:
1. При клике на кнопку показывать и скрывать выпадающее меню
1. Отрисовывать список на базе массива, хранящегося в памяти (через `map`)
1. Подсвечивать выбранный элемент в списке (сделайте это на базе inline-стилей)

"Подглядеть" реализацию показа/сворачивания на чистом JS и CSS вы можете в исходниках, расположенных в этом же каталоге.

Вы можете реализовать данную задачу как с использованием Functional компонентов, так и на базе Class-Based компонентов.

Но мы рекомендуем Functional.