Модальные окна - это то, что нам часто приходится добавлять в наше приложение React.
Чтобы упростить эту задачу, мы можем использовать существующие библиотеки компонентов для их добавления.
В этой статье мы рассмотрим, как добавить модальное окно в наше приложение React с помощью библиотек react-modal и response-confirm-alert.
Установка
Мы можем установить библиотеку, запустив:
npm install --save react-modal
с NPM или:
yarn add react-modal
с пряжей.
использование
Мы можем использовать его, добавив компонент Modal
в наш компонент React.
Для этого пишем:
import React from "react"; import Modal from "react-modal"; const customStyles = { content: { top: "50%", left: "50%", right: "auto", bottom: "auto", marginRight: "-50%", transform: "translate(-50%, -50%)" } }; Modal.setAppElement("#root"); export default function App() { let subtitle; const [modalIsOpen, setIsOpen] = React.useState(false); function openModal() { setIsOpen(true); } function afterOpenModal() { subtitle.style.color = "#f00"; } function closeModal() { setIsOpen(false); } return ( <div> <button onClick={openModal}>Open Modal</button> <Modal isOpen={modalIsOpen} onAfterOpen={afterOpenModal} onRequestClose={closeModal} style={customStyles} contentLabel="Example Modal" > <h2 ref={(_subtitle) => (subtitle = _subtitle)}>Hello</h2> <button onClick={closeModal}>close</button> <div>I am a modal</div> <form> <input /> <br /> <button>ok</button> <button>cancel</button> </form> </Modal> </div> ); }
Мы добавляем объект customStyles
, чтобы стилизовать элементы.
И мы добавляем состояние modalIsOpen
, чтобы контролировать, когда модальное окно открывается или закрывается.
Параметр isOpen
определяет, открывается или закрывается модальное окно.
onAfterOpen
принимает функцию, которая запускает код после открытия модального окна.
onRequestClose
принимает функцию, которая запускает код после закрытия модального окна.
style
принимает объект с некоторыми свойствами для изменения стилей.
contentLabel
- это метка для модального окна.
Мы вызываем Modal.setAppElement(“#root”)
, чтобы модальный компонент был прикреплен к элементу с ID root
.
реагировать-подтверждать-оповещать
Библиотека response-confirm-alert - еще одна библиотека, которая позволяет нам легко добавлять модальное окно в наше приложение React.
Для его установки запускаем:
npm install react-confirm-alert --save
Мы можем использовать это, написав:
import React from "react"; import { confirmAlert } from "react-confirm-alert"; import "react-confirm-alert/src/react-confirm-alert.css"; export default function App() { const submit = () => { confirmAlert({ title: "Confirm to submit", message: "Are you sure to do this.", buttons: [ { label: "Yes", onClick: () => alert("Click Yes") }, { label: "No", onClick: () => alert("Click No") } ] }); }; return ( <div> <button onClick={submit}>Confirm dialog</button> </div> ); }
Мы импортируем функцию confirmAlert
и вызываем ее в методе submit
, чтобы открыть с ней диалоговое окно предупреждения.
Свойство title
устанавливает заголовок диалога.
message
устанавливает содержание сообщения.
buttons
добавить кнопки с заданными метками и обработчики событий для них.
Мы также можем заставить его отображать пользовательский компонент React в качестве содержимого:
import React from "react"; import { confirmAlert } from "react-confirm-alert"; import "react-confirm-alert/src/react-confirm-alert.css"; export default function App() { const submit = () => { confirmAlert({ customUI: ({ onClose }) => { return ( <div className="custom-ui"> <h1>Are you sure?</h1> <p>You want to delete this file?</p> <button onClick={onClose}>No</button> <button onClick={() => { onClose(); }} > Yes </button> </div> ); } }); }; return ( <div> <button onClick={submit}>Confirm dialog</button> </div> ); }
Мы просто возвращаем компонент в customUI
методе.
Он получает метод onClose
из параметра и вызывает его всякий раз, когда мы хотим закрыть диалоговое окно.
Заключение
Мы можем легко добавлять модальные окна в наше приложение React с помощью библиотек react-modal и react-confirm-alert.
Подробнее на plainenglish.io