Skip to content

Conversation

@wldnjs12
Copy link

@wldnjs12 wldnjs12 commented Nov 25, 2025

✅ 워크북 체크리스트

  • 모든 핵심 키워드 정리를 마쳤나요?
  • 핵심 키워드에 대해 완벽히 이해하셨나요?
  • 이론 학습 이후 직접 실습을 해보는 시간을 가졌나요?
  • 미션을 수행하셨나요?
  • 미션을 기록하셨나요?

✅ 컨벤션 체크리스트

  • 디렉토리 구조 컨벤션을 잘 지켰나요?
  • pr 제목을 컨벤션에 맞게 작성하였나요?
  • pr에 해당되는 이슈를 연결하였나요?(중요)
  • 적절한 라벨을 설정하였나요?
  • 파트장에게 code review를 요청하기 위해 reviewer를 등록하였나요?
  • 닉네임/main 브랜치의 최신 상태를 반영하고 있는지 확인했나요?(매우 중요!)

📌 주안점

@wldnjs12 wldnjs12 self-assigned this Nov 25, 2025
@wldnjs12 wldnjs12 requested a review from sunnyinha as a code owner November 25, 2025 08:09
@wldnjs12 wldnjs12 linked an issue Nov 25, 2025 that may be closed by this pull request
import { create } from 'zustand';
import type { CartItem } from '../constants/cartItems';
import cartItems from '../constants/cartItems';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cart, modal을 하나의 store로 묶어서 괸리에 더 용이해보이는것같아요 !
컴포넌트에서 가져다 쓰기도 훨씩 직관적인것같아 좋은코드인것같습니다

Comment on lines +5 to +16
// 합계 계산 유틸리티
const computeTotals = (items: CartItem[]) => {
return items.reduce(
(acc, item) => {
acc.amount += item.amount;
acc.total += item.amount * item.price;
return acc;
},
{ amount: 0, total: 0 }
);
};

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cart항목이 변할때 amount와 total을 다시 계산해야하는 이 로직을 헬퍼함수로 분리하여서 재사용성과 가독성 면에서 좋아보입니다!~!

const Footer = () => {
const amount = useStore((state) => state.amount);
const total = useStore((state) => state.total);
const openModal = useStore((state) => state.openModal);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

연관된 값들을 한 번에 가져오고 싶을 때는 아래처럼 하나의 useStore 호출로 묶을 수 있어요.
다만 객체 셀렉터는 호출할 때마다 새로운 객체를 만들어서 반환하기 때문에,
shallow 없이 사용하면 값이 바뀌지 않아도 컴포넌트가 리렌더링될 수 있습니다.
그래서 아래 예시처럼 amount와 total을 묶어서 사용할 경우에는 shallow를 함께 적용하는 방식이 권장됩니다.

const { amount, total } = useStore(
  (state) => ({ amount: state.amount, total: state.total }),
  shallow
);

지금처럼 각각 따로 selector를 두면 레퍼런스가 안정적이라 불필요한 렌더링을 자연스럽게 피할 수 있어요!
이번 주 잘 해주셔서 따로 피드백 드릴 점이 없어 추가적인 TMI 적어드리고 갑니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Chapter09_Redux Toolkit / Zustand

3 participants