-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PR: path3 task1,task2,task3,task4 #2
base: main
Are you sure you want to change the base?
Conversation
redux, redux-toolkit 의존성 설치
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
3주차도 고생하셨습니다.👍
남은 기간도 파이팅하시길 응원합니다.
@@ -0,0 +1,13 @@ | |||
module.exports = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
}; | ||
export default Spacer; | ||
|
||
const SpaceBox = styled.span` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
span
태그는 단순 텍스트나 텍스트에 관련된 마크업 등 구문 콘텐츠에 스타일이나 속성의 범위를 적용하기 위해 감싸주는 태그입니다. 이는 주로 시각적 스타일을 위한 장식용 태그로 사용됩니다.
SpaceBox
라는 이름에 맞는 태그는 레이아웃을 만들거나 콘텐츠를 나누는(division) 컨테이너로 사용하는 div
태그가 어울리지 않을까? 라고 생각이 드네요
@@ -0,0 +1,14 @@ | |||
import styled from "styled-components"; | |||
|
|||
const Spacer = ({ width, height, ...rest }) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앞서 Chan
님의 리뷰에서도 언급하였던 부분입니다...!
무슨 의도로 분리한 컴포넌트일까요?
}, | ||
}); | ||
|
||
axiosInstance.interceptors.request.use( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
intercepter
안에 해당 로직까지 있으면 읽기에 불편하지 않을까? 라는 생각이 있습니다.
저 같은 경우 이전에 다음과 같이 분리하여 사용을 해보았습니다.
const checkAndSetToken = () => {
// 토큰을 검사하고 세팅해주는 함수
}
const handleTokenError = () => {
// 에러를 검사해주고 각 에러에 맞게 처리해주는 함수
}
axiosInstance.interceptors.request.use(checkAndSetToken, handleAPIError);
axiosInstance.interceptors.response.use(
(response) => response,
handleTokenError
);
axiosInstance.interceptors.response.use((response) => response, handleAPIError);
}, [dispatch]); | ||
|
||
// api 호출 | ||
const fetchPageNation = useCallback(async () => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
페이지네이션을 좀 더 가볍게 만들 수 있지 않을까? 라는 생각이 듭니다..!
상위 컴포넌트에서도 api를 호출할 경우 페이지네이션에 대한 정보를 불러오기 때문에 해당 api들이 두번 이상 호출되는게 좋은가? 라는 생각이 드네요
}; | ||
export default Header; | ||
|
||
const Wrapper = styled.div` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<header/>
, <footer/>
와 같은 시맨틱 태그를 사용해보시는 것은 어떨까요?
.matches(/^010-\d{4}-\d{4}$/, "유효한 전화번호를 입력해주세요."), | ||
birthday: Yup.string() | ||
.required("생년월일을 입력해주세요") | ||
.matches( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
날짜 필드를 검증할 때, 2024-02-30과 같이 실제로 존재하지 않는 날짜를 걸러내는 것이 중요합니다.
🧐이미 구현하신 코드는 기본적인 형식을 검증하지만, 윤년이나 각 달의 일수를 고려하지 않아 실제로 유효하지 않은 날짜도 통과시킬 수 있을 것으로 보여집니다..!
task1
task2
task3
task4