test: 주석 추가2 - #6
Conversation
| // 들어가세요 | ||
| const Search = ({ placeholder, onKeywordChange }: SearchProps) => { | ||
| const [value, setValue] = useState(''); | ||
| const [isFocused, setIsFocused] = useState<boolean>(false); |
There was a problem hiding this comment.
초기값이 false여서 추론 가능합니다!
boolean 제너릭빼도 될꺼같아요! 근데 원시값은 추론 가능하다는데 어디까지인지 잘 모르겠어서 이거 물어보고오쎄요!
| const fetchProducts = async () => { | ||
| setLoading(true); | ||
| try { | ||
| const response = await productListApi.getProducts({ |
There was a problem hiding this comment.
저 이 api 요청하는 부분을 sevice로 빼서 import해서 사용하고있어요!
service 없이 훅에서 직접 호출하면 비즈니스 로직 과 통신 로직 을 둘 다 담당해서 훅이 점점 커진대요!
그런데 api 구조가 단순하고 변경가능성이 없다면 사실 sevice로 빼는게 의미가 없다고 하긴해요
API 호출이 여러 곳에서 반복되고 기본값, 응답 가공, 에러 변환가 필요할 때 분리가 필요하다구 했습니다!
| }); | ||
|
|
||
| // 여기는 디바운스에요 | ||
| // 여기는 디바운스에요~~~ |
| setPage(1); | ||
| }; | ||
|
|
||
| if (error) { |
| setPage(1); | ||
| }; | ||
|
|
||
| const handleChangeOrder = (newOrder: string) => { |
There was a problem hiding this comment.
이거는 처음에 string이라서 다른 문자열이 들어올수도 있다고 해요!
그래서 as로 이건 'recent' | 'favorite'이야! 하고 강제로 캐스팅하는건데 이거는 런타임 안전성이 없다구합니다!
애초에
const handleChangeOrder = (newOrder: 'recent' | 'favorite') => {
setOrder(newOrder);
};
이렇게 받으면 되는거 같은데
const [order, setOrder] = useState<'recent' | 'favorite'>('recent'); 이미 이게있어서
const handleChangeOrder = (newOrder: typeof order) => {
setOrder(newOrder);
};
이걸로 쓰면 될꺼같아요!
📌 PR 개요
🔍 관련 이슈
(ex. Closes #12)
🔧 변경 유형
해당하는 항목에 체크해주세요.
✨ 변경 사항
ex/api/login) 추가📝 PR 제목 규칙
PR 제목은 커밋 컨벤션을 따라야 합니다.
ex) feat: 롤링페이퍼 작성 기능 추가 (#15)
✅ 체크리스트
📸 스크린샷 (선택)
🤝 기타 참고 사항