0715
clone coding
- 리팩토링하기
- cart에 product를 담는 버튼은 cart에 있어야 될까 product에 있어야 될까
- 상품 정보와 관련된 컴포넌트이기에 product 도메인에 더 가깝다
- 최종적으로는 장바구니에 담는 행위지만 핵심 구성은 상품 구성이다
- useCartProductStore, AddToCartForm 유효성 검증은 어디서 해야 될까
- maxQuantity 수량을 넘겼는데도 장바구니에 상품을 담으려고할 때의 책임은 Store에 있다. 이미 담겨있는걸 또 담으려고 하는거니까.
- appHeader와 productnavbar
- product navbar 자체에 isVisible 속성을 넘기는게 좋다
- import 순서
- https://eslint.org/docs/latest/rules/sort-imports -> eslint에서 자체적으로 제공
- https://github.com/lydell/eslint-plugin-simple-import-sort -> 자동화하려면 해당 라이브러리 설치
pnpm add -D eslint-plugin-import eslint-plugin-simple-import-sort
- eslint.config.mjs 파일 수정
pnpm lint --fix
로 lint rule에 맞게 전체 파일 수정
- cart에 product를 담는 버튼은 cart에 있어야 될까 product에 있어야 될까
js
import simpleImportSort from "eslint-plugin-simple-import-sort";
import importPlugin from "eslint-plugin-import";
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({ baseDirectory: __dirname });
const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
{
plugins: {
"simple-import-sort": simpleImportSort,
"import": importPlugin,
},
rules: {
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
},
],
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
"prettier/prettier": "off"
},
},
];
export default eslintConfig;
cart product card와 cart products는 나누는게 좋을까 합치는게 좋을까
cartform에 너무 많은 책임이 몰려있는 것 같다 어떻게 분리하는게 좋을까
- solid 원칙 읽어보기
cart products store라는 이름이 괜찮을까
- 장바구니 페이지에서는 오로지 프로덕트에 대한 상태만 다루고 쿠폰이나 배송지 등의 상태는 결제정보에서 다루기에 cart products store라고 정함
timer 리렌더링 생각해보기