3. 카테고리 목록
카테고리는 헤더에 표시한다.
ProductList 페이지처럼 훅을 이용해 카테고리를 가져올테다.
Store
ProductStore이다.
@singleton()
@Store()
export default class ProductsStore {
products: ProductSummary[] = [];
async fetchProducts() {
this.setProducts([]);
const { data } = await axios.get(`${apiBaseUrl}/products`);
const { products } = data;
this.setProducts(products);
}
@Action()
setProducts(products: ProductSummary[]) {
this.products = products;
}
}CategoriesStore 이다.
처음 ProductsStore를 만들었을땐 apiBaseUrl로 바로 axios 요청을 보낸다.
store가 늘어나며 이 부분의 중복이 반복되기 때문에
CategoriesStore 에서는 apiService를 이용한다.
ApiService
저수준에 가까운 fetch 코드를 apiService로 관심사를 분리해준 것.
카테고리별 상품 목록
useFetchProducts로 id를 받아 해당하는 상품들을 보여준다.
view - hook - store - apiService
Last updated