-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Refactor/#383] 공통 모달 리팩토링 #419
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
[ Refactor/#414 ] 페이지 이탈 커스텀훅 / react-router-dom 버전 업데이트
This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size. |
✨ 해당 이슈 번호 ✨
closes #383
todo
📌 내가 알게 된 부분
너무 길어서 노션 페이지 첨부합니다 ... 공통 모달 구현하면서 고민한 부분, 참고한 자료 기타 등등 작성해놓았으니 궁금하면 커몬
💟 재사용 모달 만들기
공통 모달로 모달을 구현하다보니 페이지 별로 레이아웃이 달라서 모달 위치가 제각각으로 뜨더라구요. 그래서
createPortal
으로 모달을 구현하였어요.useModal 커스텀 훅에 스크롤 방지 코드를 추가하였어요. 모달이 열릴 경우 스크롤 방지함수를 실행하고 모달이 닫힐 경우 스크롤 방지 함수를 제거하는 로직을 추가해두었습니다.
📓 모달 사용 방법
저희 모달에는 크게 두가지 종류가 있습니다. (자세한 건 노션에 있으니 사용법만 쓸게요)
1.
DefaultModal
- 버튼 2개가 가로로 배치된 모달DefaultModal
컴포넌트는 내부에DefaultModalBtn
컴포넌트를 합성컴포넌트로 가지고 있어요.따라서
DefaultModal
을 사용할 때는 두가지를 모두 import해서 사용하시면 됩니다.10/8 수정
✅
DefaultModal
에 넘겨줘야 하는 것sizeType
- 모달 width값저희 모달은 크게 4가지 넓이값을 가져요
modalImg
- 없는 경우도 있어서 optional prop으로 넣어두었습니다. 상황에 맞게 전달하시면 됩니다handleClickBg
- 모달 dimmed 부분을 눌렀을 때 모달이 닫히는 동작이 필요한 경우에 전달하시면 됩니다.✅ 사용 예시
2.
FullModal
- 버튼이 전체사이즈로 하나씩 새로로 배치된 모달이 모달의 경우 버튼 하나의 경우 외에도, 버튼이 아닌 다른 요소가 모달에 들어가는 등 통일성이 없기 때문에, children을 사용하여 다양한 경우에 대응할 수 있도록 구현하였습니다.
✅
FullModalBtn
에 넘겨줘야 하는 것isPrimary
- 보라색 배경을 가진 버튼을 구분하기 위함보라색 배경을 가진 버튼이 더 우위를 가지는 버튼이라 생각하여 다음과 같이 네이밍 하였습니다. 보라색의 경우
true
값을 전달해주면 됩니다.✅
FullModal
에 넘겨줘야 하는 것✅ 사용 예시
📌 질문할 부분
📌스크린샷(선택)