230620 투두리스트에 react-router-dom 적용하기
router 구조
현재 투두리스트 앱이 가지고 있는 경로는 두 가지이다.
- 홈: 투두리스트가 보이는 메인페이지
- 투두 상세 페이지: 투두리스트에서 하나의 투두를 눌렀을 때 이동되는 상세 페이지
처음에는 경로 별로 두 가지 페이지 컴포넌트를 만들어서 적용했다.
그랬더니 모달이 열리고 닫힐 때 페이지가 이동되면서 <TodoApp/> 컴포넌트가 다시 마운트 되는 문제가 발생했다
TodoItem에 css transform 속성이 적용되어 있기 때문에 전부 다시 사라졌다가 다시 나타나고 재배열 되었다.
그래서 각각 경로에 같은 <TodoApp/>을 줘봤는데, 나름 괜찮게 작동해서 이렇게 사용했다.
const Router = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<TodoApp />} />
<Route path="/todo/:id" element={<TodoApp />} />
</Routes>
</BrowserRouter>
);
};
모달 열기 -> 상세 페이지로 이동
모달 여는 버튼을 react-router-dom의 Link로 구현
<IconButton
onClick={handleEditButton}
className='todoItem__editBtn'
role='할일 편집을 위해 모달 열기'
>
<Link to={`/todo/${id}`}>
<LuEdit/>
</Link>
</IconButton>
모달 닫기 -> 홈으로 이동
모달 닫는 버튼의 클릭 이벤트로 navaigate('/')을 통해 홈으로 이동
const endEditTodo = () => {
navigate('/')
}
'내일배움캠프' 카테고리의 다른 글
230622 react에서 module css 사용하기 (0) | 2023.06.22 |
---|---|
230621 react로 input Select 만들기 (0) | 2023.06.21 |
230619 Node 로그인 만들기 (0) | 2023.06.19 |
230618 내일배움캠프 5주차 WIL (1) | 2023.06.18 |
230616 React Masonry 레이아웃 만들기 (0) | 2023.06.16 |