html "dialog"를 사용하는 간단한 React 모달
9738 단어 react
w3schools.com에 따르면 "dialog"요소를 사용하면 웹 페이지에서 팝업 대화 상자와 모달을 쉽게 만들 수 있습니다.
지원: Firefox, Chrome, Edge 및 Safari 15.4(2022년 3월 14일 현재).
구현 스크린샷:
메모:
두 가지 구성 요소를 만들었습니다.
먼저 "ModalTester"구성 요소는 모달을 포함하고 엽니다.
import { useState } from "react";
import { Modal } from "components";
const ModalTester = () => {
const [open, setOpen] = useState(false);
return (
<div>
<div>open: {open ? "true" : "false"}</div>
<br />
<button onClick={() => setOpen(true)}>Open dialog</button>
<Modal
title="Modal dialog example"
open={open}
onClose={() => setOpen(false)}
>
<p>Outside the dialog is not clickable.</p>
<p>You can click Close, or press Escape.</p>
</Modal>
</div>
);
};
export default ModalTester;
그런 다음 "Modal"구성 요소 자체:
import { useEffect, useRef } from "react";
import styled from "styled-components";
const Container = styled.dialog`
width: 400px;
border-radius: 8px;
border: 1px solid #888;
::backdrop {
background: rgba(0, 0, 0, 0.25);
user-select: none;
}
`;
type Props = {
title: string;
open: boolean;
onClose: () => void;
children: React.ReactNode;
};
const Modal = ({ title, open, onClose, children }: Props) => {
const ref = useRef(null);
useEffect(() => {
if (open) {
ref.current?.showModal();
} else {
ref.current?.close();
}
}, [open]);
return (
<Container ref={ref} onCancel={onClose}>
<h3>{title}</h3>
{children}
<button onClick={onClose}>Close</button>
</Container>
);
};
export default Modal;
내 결론:
제한 사항/문제:
읽어 주셔서 감사합니다. 제안/수정을 환영합니다.
Reference
이 문제에 관하여(html "dialog"를 사용하는 간단한 React 모달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/elsyng/react-modal-dialog-using-html-dialog-element-5afk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)