Я использую bootstrap5 для React. Я успешно установил bootstrap5 в React. Теперь мне нужно показать модальное окно на своей странице, поэтому я добавил кнопку и модальный код на свою страницу.
Ниже приведен код, который я использую для модального окна. Теперь я нажимаю на кнопку, и ничего не работает. Я не получаю свой модальный.
В чем проблема?
import React from "react";
function addEmployee(){
return(
<div className = "addEmployee">
<button type = "button" className = "btn btn-primary" data-bs-toggle = "modal" data-bs-target = "#staticBackdrop">Add Employee</button>
<div className = "modal fade" id = "staticBackdrop" data-bs-backdrop = "static" data-bs-keyboard = "false" tabIndex = "-1" aria-labelledby = "staticBackdropLabel" aria-hidden = "true">
<div className = "modal-dialog">
<div className = "modal-content">
<div className = "modal-header">
<h5 className = "modal-title" id = "staticBackdropLabel">Modal title</h5>
<button type = "button" className = "btn-close" data-bs-dismiss = "modal" aria-label = "Close"></button>
</div>
<div className = "modal-body">
...
</div>
<div className = "modal-footer">
<button type = "button" className = "btn btn-secondary" data-bs-dismiss = "modal">Close</button>
<button type = "button" className = "btn btn-primary">Understood</button>
</div>
</div>
</div>
</div>
</div>
)
}
export default addEmployee;
Я бы посоветовал вам использовать react-bootstrap
это намного проще, и javascript был сделан за вас
React-Bootstrap заменяет Bootstrap JavaScript
Каждый компонент был создан с нуля как компонент React, без ненужных зависимостей, таких как jQuery.
Для начала просто установите пакет npm install react-bootstrap bootstrap
посмотрите на этот пример
import { Modal, Button } from "react-bootstrap";
function Example() {
const [show, setShow] = useState(false);
const handleClose = () => setShow(false);
const handleShow = () => setShow(true);
return (
<>
<Button variant = "primary" onClick = {handleShow}>
Launch demo modal
</Button>
<Modal show = {show} onHide = {handleClose}>
<Modal.Header closeButton>
<Modal.Title>Modal heading</Modal.Title>
</Modal.Header>
<Modal.Body>Woohoo, you're reading this text in a modal!</Modal.Body>
<Modal.Footer>
<Button variant = "secondary" onClick = {handleClose}>
Close
</Button>
<Button variant = "primary" onClick = {handleClose}>
Save Changes
</Button>
</Modal.Footer>
</Modal>
</>
);
}
render(<Example />);
Блог Гаурава Сингхала @PluralSight
Вы должны использовать контролируемые компоненты, которые используют внутреннее состояние для установки значения и изменить поведение компонента. Библиотеки, такие как jQuery напрямую манипулирует DOM, тогда как компоненты React используют Виртуальный DOM для изменения фактического DOM в браузере. Использование jQuery для изменить поведение вашего компонента возможно. Все равно это приведет к неожиданные результаты и затрудняют отладку. Реагировать на Bootstrap реализует каждый компонент в чистом React, так что вам не о чем беспокоиться о зависимости Bootstrap от jQuery
чтобы проверить их страницу документации (реакции-бутстрап), вот ссылка, по которой вы можете перейти/перейти на реагировать-бутстрап
Нет, просто запустите npm install react-bootstrap, React-Bootstrap не зависит от очень точной версии Bootstrap, он не поставляется с включенным CSS. Однако для использования этих компонентов требуется некоторая таблица стилей. так что у вас есть import 'bootstrap/dist/css/bootstrap.min.css'; в ваш файл index.js
Я получил ошибку Строка 5:27: React Hook «useState» вызывается в функции «addEmployee», которая не является ни компонентом функции React, ни пользовательской функцией React Hook. Имена компонентов React должны начинаться с заглавной буквы
Хорошо. Поэтому я добавил import React, {useEffect, useState} из «реагировать»; и имя функции заглавной буквой. и решил мои проблемы
Реализовать навигацию на основе react-bootstrap
действительно легко, но когда пользовательский дизайн навигации исходит от дизайнера UI / UX, его также сложно реализовать в конкретном проекте реагирования! Есть идеи?
Bootstrap 5 больше не зависит от jQuery, поэтому вам не нужна сторонняя библиотека, такая как react-bootstrap
, чтобы использовать Bootstrap в React. Например, вы можете использовать атрибуты data-bs-
в разметке или создать функциональный компонент для модального окна Bootstrap с методами для отображения/скрытия модального окна...
function ModalExample() {
const modalRef = useRef()
const showModal = () => {
const modalEle = modalRef.current
const bsModal = new bootstrap.Modal(modalEle, {
backdrop: 'static',
keyboard: false
})
bsModal.show()
}
const hideModal = () => {
const modalEle = modalRef.current
const bsModal= bootstrap.Modal.getInstance(modalEle)
bsModal.hide()
}
return(
<div className = "addEmployee">
<button type = "button" className = "btn btn-primary" onClick = {showModal}>Add Employee</button>
<div className = "modal fade" ref = {modalRef} tabIndex = "-1" >
<div className = "modal-dialog">
<div className = "modal-content">
<div className = "modal-header">
<h5 className = "modal-title" id = "staticBackdropLabel">Modal title</h5>
<button type = "button" className = "btn-close" onClick = {hideModal} aria-label = "Close"></button>
</div>
<div className = "modal-body">
...
</div>
<div className = "modal-footer">
<button type = "button" className = "btn btn-secondary" onClick = {hideModal}>Close</button>
<button type = "button" className = "btn btn-primary">Understood</button>
</div>
</div>
</div>
</div>
</div>
)
}
работает как шарм спасибо. Я нахожу это решение более элегантным, чем использование другой библиотеки.
Это должен быть принятый ответ. Работает как шарм.
Я уже установил bootstrap5. Мне нужно удалить это?