-
Notifications
You must be signed in to change notification settings - Fork 46
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
[이주훈]sprint10 #329
The head ref may contain hidden characters: "Next-\uC774\uC8FC\uD6C8-sprint10"
[이주훈]sprint10 #329
Conversation
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.
고생하셨습니다.
@@ -0,0 +1,32 @@ | |||
export async function getArticleDetail(articleId: number) { | |||
try { | |||
const response = await fetch(`https://panda-market-api.vercel.app/articles/${articleId}`); |
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.
도메인 주소는 .env로 따로 관리해주셔도 좋을 것 같습니다.
} | ||
|
||
export async function getArticleComment({ articleId, limit = 10, }: { articleId: number; limit?: number;}) { | ||
const params = { limit: String(limit), }; |
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.
query가 string으로 변환되기 때문에 String으로 변환하지 않으셔도 될 것 같은데, 에러가 발생하지 않는다면 String은 빼주셔도 될 것 같습니다.
@@ -0,0 +1,17 @@ | |||
import { format, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, } from "date-fns"; | |||
|
|||
export const TimestampCal = (dateString: Date) => { |
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.
이 컴포넌트는 문자열만 반환해주는데, 이럴때는 컴포넌트 보다는 함수로 사용하셔도 좋습니다.
type?: string; | ||
} | ||
|
||
const InputItem: React.FC<InputItemProps> = ({ |
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.
내부에 textarea와 input 컴포넌트가 각각 존재하기 때문에 이런 경우에는 두 컴포넌트로 분리해주시는 것도 좋습니다.
|
||
const ArticleCommentThread: React.FC<ArticleCommentThreadProps> = ({ articleId }) => { | ||
const [comment, setComment] = useState<Comment[]>([]); | ||
const [error, setError] = useState<string | null>(null); |
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.
에러가 없을때 빈 문자열이 아니라 null로 명시해주신거 좋네요.
|
||
async function fetchArticle() { | ||
if(!articleId) { | ||
setError('아이디없음'); |
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.
에러 문자열 같은 경우 상수로 관리해주시는 것도 좋습니다.
요구사항
체크리스트 [기본]
상품 등록 페이지
[x] 상품 등록 페이지 주소는 "/addboard" 입니다.
[x] 게시판 이미지는 최대 한개 업로드가 가능합니다.
[x] 각 input의 placeholder 값을 정확히 입력해주세요.
[x] 이미지를 제외하고 input 에 모든 값을 입력하면 '등록' 버튼이 활성화 됩니다.
상품 상세 페이지
[x] 상품 상세 페이지 주소는 "/board/{id}" 입니다.
[x] 댓글 input 값을 입력하면 '등록' 버튼이 활성화 됩니다.
[x] 활성화된 '등록' 버튼을 누르면 댓글이 등록됩니다
체크리스트 [심화]
상품 등록 페이지
[] 회원가입, 로그인 api를 사용하여 받은accessToken을 사용하여 게시물 등록을 합니다.
[] ’등록' 버튼을 누르면 게시물 상세 페이지로 이동합니다.
주요 변경사항
스크린샷
멘토에게