//////
Search
🔧

State로 모달 컨트롤하기

작성자
날짜
2023/01/02 15:27
카테고리
Hook
CSS
useSelector 알아보기 (사용자 정보 받아올 때 사용하는 훅인 듯?) → 리덕스
useNavigate →(state)→ useLocation 프로필 설정 페이지에 적용 가능하지 않을까?

Today Task

모달창 UI 구현

Trouble

1.
모달창을 어떻게 구현할 것인가?
2.
클릭시 모달창 닫기 이벤트를 모달 섹션에 설정해두면, z-index로 위에 올려둔 버튼을 클릭해도 모달창이 닫기는 문제 발생
→ 섹션과 같은 크기의 백그라운드 div를 섹션 태그 내에 추가하여 클릭 이벤트 설정
⇒ 해결!
3.
모달창이 열릴 때, 슬라이드 애니메이션 추가과정에서 문제 발생

Trouble Shooting

1. 모달창 구현 방법 선택하기

1. 리액트 라이브러리 react-modal 사용 2. ReactDOM 사용 3. usePortal 훅 사용 4. useState 훅 사용 5. ... 등등
Plain Text
복사
다양한 방식이 있어 구현 방법 선택이 어려웠음
오류 발생의 위험이 있는 선택지와 DOM 사용 선택지(리액트에서 DOM을 보고 싶지 않은 개인적인 취향)를 제외
페이지별로 모달 컴포넌트를 쪼개어 페이지에서 간단하게 작성할 수 있고, state를 내려 받기를 시도해보고자 4번 선택
4번: useState 를 사용하여 state로 모달 컨트롤
→ 컴포넌트별로 props를 2번 이상 내려 받는데, 처음에 너무 헷갈렸음
→ 모달창이 화면에 렌더링 되는 부분에서 모달창 열기 버튼이 있는 가장 작은 컴포넌트까지 props 내려주기
⇒ 해결!
→ state를 받고 받고 또 받고
(사용자 정보는 아직 못 받음)
modal 에는 기본 형태만 저장하고 페이지 내에서 children 및 온갖 뫄뫄 작성 vs modal 내에서 컴포넌트별로 쪼개서 꽉꽉 작성해두고 페이지에서 간단하게 가져오기

3. 애니메이션 추가하기

b.
keyframes 사용
→ 애니메이션 적용 성공
→ 그러나 애니메이션 transform 위치가 안 맞춰지는 문제 발생
→ to에는 애니메이션이 들어가는 태그의 위치 설정값과 똑같이 설정
→ from에는 to와 위치 설정을 맞춘 후, Y값만 변경 (양수로 넣어야 아래→위로 설정됨)
⇒ 해결!
// 이전 코드 export const slideUp = keyframes` from{ transform: translateY(-50px) } to{ transform: translateY(0%) } `; // 수정 후 코드 export const slideUp = keyframes` from{ transform: translate(-50%, 50px) } to{ transform: translateX(-50%) } `;
JavaScript
복사

Review

모달놈…. 처음에 삽질을 많이 해서 시간을 많이 버렸지만 방향을 잡고 나선 착착 진행됐다.
이번 작업을 하며 props 내려 받기를 조금쯤 이해하게 됐다.
애니메이션을 추가하며 굉장히 긴 시간 헤맸는데, 별 게 아니었다. 흠… 함께 봐준 팀원들에게 감사를…