반응형
[React, Next.js] 모달(Modal) 제어부 (실제 모달 제어부분)
1. 전역관리 도구인 recoil을 통해 모달 컴포넌트를 제어하는 각 컴포넌트 파일들
예제 코드
import { useRecoilState } from "recoil";
const [modalState, setModalState] = useRecoilState(atomModalState);
- recoil이 필요하므로 modal을 제어할 컴포넌트에서 recoil을 import해준다.
- useRecoilState로 recoil의 atom을 제어한다.
2. 전역적으로 모달 상태 선언 및 초기화를 해주는 전역관리 도구인 recoil의 atom을 모아놓은 atom.ts 파일
예제 코드
export const aModalState = atom({
key: "atomModalState",
default: {
option: "",
style: { width: "", height: "" },
},
});
- recoil파일들을 모아놓은 파일에 선언된 모달제어용 atom이다.
- 각각의 컴포넌트에서 지정되는 모달 옵션, 스타일의 초기화를 담당한다.
3. 사용하고자 하는 파일에서 recoil에서 모달 상태 변경, recoil을 통해 모달 컴포넌트를 제어하는 각 컴포넌트 파일들
예제 코드
setModalState({
option: ModalOption.RESERVATION_VISITED,
style: {
width: "400px",
height: "200px",
},
});
- onClick등의 이벤트가 발생할 때 위 코드처럼 ModalState를 변경해주면 해당 모달이 켜지는 작업을 수행한다.
4. 모달을 닫을 때 recoil에서 모달 상태 변경, recoil을 통해 모달 컴포넌트를 제어하는 각 컴포넌트 파일들
예제 코드
setModalState({
...modalState,
option: "",
});
- onClick등의 이벤트가 발생할 때 위 코드처럼 ModalState를 변경해주면 해당 모달이 꺼지는 작업을 수행한다.
반응형
'개발 프레임워크 > Next.js' 카테고리의 다른 글
[Next.js] Error: There was an error while hydrating this Suspense boundary. Switched to client rendering (0) | 2023.03.06 |
---|---|
[Next.js] 개발환경 구축 및 Next.js 13으로 업데이트 (0) | 2023.03.04 |
[React, Next.js] 모달(Modal) 구현_1 (react-modal을 통한 생성) (0) | 2023.02.22 |
[Next.js] Warning: A component is Changing an uncontrolled input to be controlled Error (0) | 2023.02.09 |
useState로 배열, 객체의 값 변경(체크박스 구현) (0) | 2023.02.08 |
댓글