CSSTransition을 사용하면 팝업에서 Transition 효과를 적용 할수 있습니다.
https://reactcommunity.org/react-transition-group/transition
React Transition Group
A function child can be used instead of a React element. This function is called with the current transition status ('entering', 'entered', 'exiting', 'exited'), which can be used to apply context specific props to a component. {state => ( )}
reactcommunity.org
해당 사이트에 자세한 설명 및 속성에 대한 안내가 나와있습니다.
1. 먼저 팝업을 <CSSTransition> 으로 감싸줍니다
<CSSTransition>
<PageContainer ref={nodeRef}>
<TitleContainer backgroundColor="#0064de">
<BackBtn onClick={() => setShow(false)} />
<Title title="팝업 Todo" color="black">
팝업 Todo
</Title>
</TitleContainer>
<PageContent paddingTop={20}>
<ListStyled>
<li>할일1</li>
<li>할일2</li>
</ListStyled>
</PageContent>
</PageContainer>
</CSSTransition>
2. 기타 속성을 설정합니다.
<CSSTransition
appear
in={isShow}
nodeRef={nodeRef}
unmountOnExit
mountOnEnter
classNames={'popup-right'}
timeout={300}
onExited={onClose}
>
3. Transition CSS 설정
.popup-right-enter, .popup-right-appear {
transform: translateX(100%);
}
.popup-right-enter-active, .popup-right-appear-active{
transform: translateX(0%);
transition: transform 300ms ease-out;
}
.popup-right-exit {
transform: translateX(0%);
}
.popup-right-exit-active{
transform: translateX(100%);
transition: transform 300ms ease-out;
}
최종 Code - Typescript로 작성되었습니다.
팝업 컴포넌트
export default function PopupTodo({ onClose }: { onClose: () => void }) {
const [isShow, setShow] = useState(true);
const nodeRef = useRef(null);
return (
<CSSTransition
appear
in={isShow}
nodeRef={nodeRef}
unmountOnExit
mountOnEnter
onExited={onClose}
classNames={'popup-right'}
timeout={300}
>
<PageContainer ref={nodeRef}>
<TitleContainer backgroundColor="#0064de">
<BackBtn onClick={() => setShow(false)} />
<Title title="팝업 Todo" color="black">
팝업 Todo
</Title>
</TitleContainer>
<PageContent paddingTop={20}>
<ListStyled>
<li>할일1</li>
<li>할일2</li>
</ListStyled>
</PageContent>
</PageContainer>
</CSSTransition>
);
}
부모 Component에서 정의
{isShowPopup && <PopupTodo onClose={() => setShowPopup(false)} />}
[React] Back 버튼으로 Modal 제어하기(1) (0) | 2023.02.07 |
---|---|
React forwardRef - (feat. 공통 팝업) (0) | 2023.02.01 |
React Popup(팝업) 생성하기 (0) | 2023.01.25 |
React alias 설정시 Code Hint 설정 (0) | 2023.01.20 |
React Path alias 절대경로 설정 (0) | 2023.01.20 |
댓글 영역