3. 카테고리 관리
1. 카테고리 목록
🎯 데이터를 변경하는 사례 만들어 보기
카테고리는 이름과 표시 여부만 관리하면 돼서 매우 간단
CategoryListPage 생성
CategoryListPage 생성기존과 매우 유사
추가, 변경 등의 링크가 추가됨
export default function CategoryListPage() {
const { categories, loading, error } = useFetchCategories();
// loading, error 처리
return (
<Container>
<h2>Categories</h2>
<table>
<thead>
<tr>
<th>이름</th>
<th>표시</th>
<th>행동</th>
</tr>
</thead>
<tbody>
{categories.map((category) => (
<tr key={category.id}>
<td>{category.name}</td>
<td>{category.hidden ? '감춤' : '보임'}</td>
<td>
<Link to={`/categories/${category.id}/edit`}>수정</Link>
</td>
</tr>
))}
</tbody>
</table>
<Link to="/categories/new">
카테고리 추가
</Link>
</Container>
);
}useFetchCategories hook 생성
createCategory 함수를 제공하게 하는데, 여기서 SWR의 캐시 초기화(사실상 refetch 요청)를 위해 mutate 함수를 호출
2. 카테고리 추가
React Hook Form
Performant, flexible and extensible forms with easy-to-use validation 사용하기 쉬운 유효성 검사와 함께 성능이 뛰어나고 유연하며 확장 가능한 폼
💡 React Hook Form의 useForm 훅과 Controller 컴포넌트를 잘 활용하면 됨 Controller 쓰는 법이 약간 복잡하지만, 예전에 했던 것처럼 TextBox 등으로 추출(extract)하면 깔끔하게 사용할 수 있음
CategoryNewPage 구현
CategoryNewPage 구현카테고리 추가하기
3. 카테고리 수정
기존 카테고리를 수정할 때는 기존 데이터를 활용해야 하기 때문에 처리할 것이 조금 많음
여기서는 카테고리 표시 여부를 수정할 때만 조작 가능하도록 구현
useFetchCategory hook 생성
useFetchCategory hook 생성Last updated