FrameWork/Chakra-UI
모달 + useDisclosure
mansoorrr
2024. 8. 10. 17:29
Chakra에서 모달을 만들어 띄우기 위해 useDisclosure 훅을 사용한다.
useDisclosure는 isOpen, onOpen, onClose를 반환한다.
[Modal]
- ChakraUI에서 Modal컴포넌트를 이용해 Modal만듬
- props(isOpen, onClose)를 명시해야 함
- children 컴포넌트들과 함께 사용됨
- Modal > ModalComponent > ModalHeader, ModalBody, ModalFooter
- ModalOverlay: 모달 띄워지면 주위 어둡게
- ModalCloseButton: 모달 닫기 버튼 > onClose함수 실행되는 구조
<Modal isOpen={isOpen} onClose={onClose}>
<ModalOverlay /> // 모달 실행시 어둡게
<ModalContent>
<ModalHeader>
<ModalCloseButton />
</ModalHeader>
<ModalBody></ModalBody>
<ModalFooter></ModalFooter>
</ModalContent>
</Modal>
[useDisclosure]
- isOpen: 열릴 모달 실행
- onOpen: 모달 버튼 클릭시 isOpen 함수 실행
- onClose: 모달을 닫히게 함
import { useDisclosure } from "@chakra-ui/react";
import LoginModal from "./LoginModal";
import SignupModal from "./SignupModal";
export default function Header () {
const {isOpen, onClose, onOpen} = useDisclosure(); // hook 선언
return (
<Box>
<Button onClick={onOpen}>Login</Button> // 클릭시 onOpen함수 실행
// onOpen함수 실행되면 isOpen함수가 실행되면서 모달 실행
// onClose함수도 실행될 수 있도록 조치
<Modal isOpen={isOpen} onClose={onClose}>
//모달 내용.....
</Modal>
</Box>