Skip to content
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

[김진우] Week19 #554

Open
wants to merge 7 commits into
base: part3-김진우
Choose a base branch
from

Conversation

wecaners
Copy link
Collaborator

@wecaners wecaners commented Jan 14, 2024

요구사항

기본

  • [프로젝트 전반] https://bootcamp-api.codeit.kr/docs/linkbrary/v1 문서를 참고해 https://bootcamp-api.codeit.kr/api/linkbrary/v1 api를 활용했나요?
  • [프로젝트 전반] api 요청에 TanStack React Query를 활용했나요?
  • [로그인, 회원가입 페이지] 로그인은 POST ‘/auth/sign-in’ 을 활용했나요?
  • [로그인, 회원가입 페이지] 회원가입은 POST ‘/auth/sign-up’ 을 활용했나요?
  • [로그인, 회원가입 페이지] 이메일 중복확인은 POST ‘/users/check-email’ 을 활용했나요?
  • [링크 공유 페이지] 폴더의 정보는 GET ‘/folders/{folderId}’, 폴더 소유자의 정보는 GET ‘/users/{userId}’를 활용했나요?
  • [링크 공유 페이지] 폴더의 링크 데이터는 GET ‘/folders/{folderId}/links’ 를 활용했나요?
  • [링크 공유 페이지] 유효한 access token이 있는 경우 GET ‘/users’ 로 현재 로그인한 유저 정보를 받아 상단 네비게이션 유저 프로필을 보여 주나요?
  • [링크 공유 페이지] 유효한 access token이 없는 경우 “로그인” 버튼을 보여 주나요?
  • [폴더 페이지] 폴더 페이지에서 현재 유저의 폴더 목록 데이터는 GET ‘/folders’ 를 활용했나요?
  • [폴더 페이지] 폴더 페이지에서 전체 링크 데이터를 받아올 때 GET ‘/links’, 특정 폴더의 링크를 받아올 때 GET ‘/folders/{folderId}/links’를 활용했나요?
  • [모달] 폴더 이름 변경은 ‘PUT /folders/{folderId}’를 활용했나요?
  • [모달] 폴더 생성은 ‘POST /folders’를 활용했나요?
  • [모달] 폴더 삭제는 ‘DELETE /folders/{folderId}’를 활용했나요?
  • [모달] 링크 삭제는 ‘DELETE /links/{linkId}’를 활용했나요?
  • [모달] 링크 생성은 ‘POST /links’를 활용했나요?

주요 변경사항

  • api 호출 로직 react-query로 변경

멘토에게

  • 기능부터 구현하느라 컴포넌트 분리가 거의 안된상태입니다.
  • 파트3 멘토링 해주셔서 감사합니다 :)

@wecaners wecaners requested a review from SINHOLEE January 14, 2024 10:55
@wecaners wecaners self-assigned this Jan 14, 2024
@wecaners wecaners added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Jan 14, 2024
Comment on lines +15 to +27
const getCurrentUser = async () => {
try {
const res = await instance.get(USERS_ENDPOINT, {
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
});
const { data } = res;
return data;
} catch (error) {
console.error(error);
}
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

를 포함한 getLinks , getFolders 는 컴포넌트 밖으로 꺼내는게 좋아요. 컴포넌트가 리랜더링할 때 마다 해당 함수를 매번 새로 생성해야하니 이런식으로 코드를 작성하면 성능이 떨어지게됩니다. 코드 유지보수성 측면에서도 좋지 않구요

Comment on lines +71 to +99
let links;
if (folderId === ALL_LINK_NAME) {
try {
const res = await instance.get(`/links`, {
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
});
const { data } = res;
links = data;
setFilteredLinks(links);
} catch (error) {
console.error(error);
}
} else if (typeof folderId === "number") {
try {
const res = await instance.get(`/folders/${folderId}/links`, {
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
});
const { data } = res;
links = data;
setFilteredLinks(links);
} catch (error) {
console.error(error);
}
}
return links;
Copy link
Collaborator

Choose a reason for hiding this comment

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

const url = folderId === ALL_LINK_NAME ? link:forlders/${forderId}/link

하면 fetch 반복이 줄겠네요!

  1. setFiltered는 파생상태니 지양하자고 했었죠?

Comment on lines +149 to +161
const addFolder = async () => {
instance.post(
`/folders`,
{
name: addFolderName,
},
{
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
}
);
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

addFolderName 변수를 암묵적인자로 받으려고 하니 컴퍼넌트안에 해당함수가 들어가있는거라고 판단했어요.

명시적인자로 밖에서 받을 수 있게하면, 해당 함수을 컴퍼넌트바깥으로 보낼 수 있어요.

Comment on lines +28 to +41
const signup = async () => {
const res = await instance.post(`${SIGNUP_ENDPOINT}`, {
email: watch("email"),
password: watch("password"),
});
const accessToken = res?.data.accessToken;
setAccessToken(accessToken);
res.status === 200 && router.push("/folder");
};

const signupMutation = useMutation({
mutationFn: signup,
});

Copy link
Collaborator

Choose a reason for hiding this comment

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

  1. email, password를 명시적 인자오 받았으면 컴퍼넌트 밖으로 뺄 수 있음
  2. set...함수를 fetch 함수 내부에서 호출하는게 아니라, useMutation의 onSuccess 콜백 안에서 호출해야합나자

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants