728x90
✅ 전체 코드
// 함수
const [open, setOpen] = useState(false);
const OpenCloseMenu = useCallback(() => {
if(open === false) {
setOpen(true);
} else {
setOpen(false);
}
}, [open]);
// return 이후
// 버튼 클릭 이벤트 할 곳
<OpenButton
onClick={OpenCloseMenu}
>
// 열고 닫을 모달
<Modal
open={open}
>{내용}</Modal>
</OpenButton>
똑같이 따라하면 된다.
전체 코드로 기록하는 것을 좋아하지 않는데, 이 코드는 굉장히 간단해서 똑같이 따라하면 쉽게 할 수 있다.
단, css가 중요하다. 열고 닫을 모달에 적용시켜 주면 된다.
나는 아래처럼 스타일 컴포넌트로 작성했다.
const Modal = styled.div`
width: ~;
hieght: ~;
// 위 까진 디자인에 맞춘 자신들의 css 를 넣으면 되고 아래 네 개를 잘 챙겨주어야 한다.
visibility : ${({open}) => (open ? 'visible' : 'hidden')};
opacity: ${({open}) => (open ? '1' : '0')};
// transform은 위치 설정을 위해 지정
transform: translate(10px, 10px);
position: absolute;
`;
타입스크립트를 사용하고 있다면, 아래처럼 interface를 사용하여 boolean으로 타입을 지정해주면 된다.
interface ModalProps{
open: boolean;
};
const Modal = styled.div<ModalProps>`
width: ~;
hieght: ~;
// 위 까진 디자인에 맞춘 자신들의 css 를 넣으면 되고 아래 네 개를 잘 챙겨주어야 한다.
visibility : ${({open}) => (open ? 'visible' : 'hidden')};
opacity: ${({open}) => (open ? '1' : '0')};
// transform은 위치 설정을 위해 지정
transform: translate(10px, 10px);
position: absolute;
`;
728x90
'제니의 개발일지 > 도움이 되었던 것 정리' 카테고리의 다른 글
[TypeScript] useRef 모달 바깥 영역 클릭 이벤트 (0) | 2023.03.27 |
---|---|
[리액트 React] 이미지 업로드 이름 찾아오기 (1) | 2023.01.02 |
TypeScript props css boolean 적용(+style-components) (0) | 2022.12.14 |
TypeScript css 타입 지정해주기 (0) | 2022.12.14 |
IntersectionObserver 스크롤 감지 (0) | 2022.12.14 |