- Node 버전은 lts를 사용했습니다.
- 프로젝트 루트 폴더로 이동
- npm i
- npm start
- React
- TypeScript
- Redux-toolkit
- SCSS
- husky & lint-stage
- prettier & eslint
- 지뢰를 누르면 게임오버가 되고, 모든 지뢰에 깃발을 꽂고 지뢰가 없는 모든 칸을 오픈하면 승리합니다.
- 첫 번째 빈칸을 열 때 지뢰의 위치를 지정하여 첫 번째 클릭된 위치를 제외하고 지뢰를 배치하였습니다.
- setInterval을 이용하여 구현하였습니다.
- Custom 난이도의 경우 모달로 값을 받도록 하고, 모달 바깥을 클릭 시 모달이 사라지도록 Custom Hook을 만들어 구현했습니다.
- mouse event가 button이라는 값 안에 현재 클릭된 버튼이 왼쪽인지 오른쪽인지에 따라 0과 2를 담고 있어 이를 이용해 구현했습니다.
- ref에 string으로 0과 2를 추가하여 '20' 또는 '02'일 경우 양쪽 클릭으로 간주했습니다.
- mouseUp이나 mouseLeave가 발생하면 ref는 초기화됩니다.
- localStorage를 이용했습니다.
- 모달과 드롭다운 메뉴의 경우 닫을 수 있는 버튼이 각각 존재하지만 요소의 바깥을 클릭해서도 닫을 수 있도록 했습니다.