В блоге на прошлой неделе я рассказал, как получать данные в компоненте класса и компоненте функции с помощью React Hooks. Сегодня мы рассмотрим, как реализовать модальное окно в обоих типах компонентов, и сравним ключевые различия. Начнем с реализации компонента класса.
Создайте модальный компонент - класс
Сначала мы импортируем несколько компонентов из React Bootstrap и создаем начальное состояние с nasaData
установкой пустого объекта и showModal
установленным на false
. Следующим шагом будет получение данных НАСА и использование this.setState
для присвоения этих данных nasaData
.
Мы создаем функции handleShow
и handleHide
для переключения логического значения showModal
. Мы вызываем render, чтобы вернуть компоненты, и оборачиваем возврат сокращением фрагмента, <>
и </>
. Это замена, а не упаковка компонентов в <React.Fragment>
. Мы отображаем данные API в нашем браузере, вызывая формат this.state.nasaData.title
.
На целевой странице приложения мы нажимаем кнопку, чтобы открыть модальное окно и вызвать прослушиватель событий и функцию с onClick={this.handleShow}
. Когда статус showModal
равен true
, show={this.state.showModal}
представляет модальное окно в браузере. Исходная целевая страница отображается, когда значение showModal
равно false
.
Создание модального функционального компонента с помощью крючков
В функциональном компоненте мы импортируем хуки useState
и useEffect
из React и несколько компонентов из React Bootstrap. Мы создаем переменную nasaData
, обновляем значение с помощью setData
и устанавливаем начальное состояние на пустой объект с помощью useState({ })
. Мы также создаем showModal
переменную, setModal
функцию и useState(false)
в качестве начального состояния.
Теперь мы получаем данные НАСА в ловушке useEffect
и используем setData
, чтобы назначить их nasaData
. Мы показываем определенные фрагменты данных в нашем браузере, связывая формат nasaData.title
. Чтобы просмотреть модальное окно, мы нажимаем кнопку вызова onClick={() => setModal(true)}
. Это событие вызывает функцию setModal
, обновляет значение showModal
до true
и отображает модальное окно с show={showModal}
. Чтобы вернуться на целевую страницу, мы нажимаем x в правом верхнем углу модального окна или кнопку закрытия.
Модальная функциональность
Заключительные мысли - модальное сравнение
- Тернарные операторы трудно читать в компоненте класса, и их необходимо разбить на несколько строк.
- В функциональном компоненте с хуками мы можем обрабатывать события с помощью встроенных функций, не загромождая оператор return.
- Мы удаляем ненужные
this.state…
цепочки в функциональном компоненте для отображения атрибутов данных в браузере.
Оба компонента обладают одинаковой функциональностью, но есть заметные преимущества в функциональном компоненте с хуками. В дополнение к трем пунктам, указанным выше, функциональный компонент на семь строк короче и более читабелен с меньшим количеством символов на строку кода. Посетите Документацию React, чтобы найти дополнительные примеры и продолжить изучение хуков!