-
Notifications
You must be signed in to change notification settings - Fork 6
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
Refactor: 피드페이지 리팩토링 #193
Refactor: 피드페이지 리팩토링 #193
Conversation
@ParkSohyunee is attempting to deploy a commit to the Eujin Ahn's projects Team on Vercel. A member of the Team first needs to authorize it. |
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.
소현님, 빠르게 개선해주셔서 감사드립니다!🥹👏👍
리스트 생성 부분에서 invalidQueries 부분 확인했습니다!
staleTime을 설정하고 변경 시 업데이트 해주는 식으로 구현하여 캐싱을 이용할 수 있는 거군요!🤩
감사합니다✨
queryKey: [QUERY_KEYS.getCategories], | ||
queryFn: getCategories, | ||
staleTime: Infinity, // 카테고리는 자주 변하는 데이터가 아니므로 |
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.
👍👍👍👍👍
@@ -48,7 +48,7 @@ export default function OpenBottomSheetButton({ listId, isCollaborator }: OpenBo | |||
const deleteCommentMutation = useMutation({ | |||
mutationFn: () => deleteList(listId), | |||
onSuccess: () => { | |||
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.getAllList, user.id] }); | |||
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.getAllList, user.id + ''] }); |
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.
소현님, 공백 추가하신 이유가 궁금합니다!! 뒤에 공백을 추가하지 않으면 인식되지 않는 걸까요??
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.
소현님, 공백 추가하신 이유가 궁금합니다!! 뒤에 공백을 추가하지 않으면 인식되지 않는 걸까요??
서영님, 맞습니다🥰 getAllList의 쿼리키 중 userId가 string이기 때문에 동일한 키로 인식하기 위해 number타입의 user.id를 문자열로 변환하기 위한 방법을 넣은 것입니다! 문자열로 변환하기 위한 여러 방법이 있겠지만 저는 위처럼 작성하는 편입니다,
혹시 추가로 궁금하신 점 있으시면 말씀 부탁드립니다!!
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.
@ParkSohyunee 소현님! 늦은 확인 죄송합니다..!! 🥹 쿼리 무효화 해주신 부분 잘 확인했습니다! 정말 감사합니다!! 🙇♀️
@@ -144,6 +145,9 @@ export default function EditPage() { | |||
} = useMutation({ | |||
mutationFn: updateList, | |||
onSettled: () => { | |||
queryClient.invalidateQueries({ | |||
queryKey: [QUERY_KEYS.getAllList, user.id + ''], |
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.
수정에서는 생성페이지에서 사용했던 키인
formatData().listData.collaboratorIds.length === 0 ? 'my' : 'collabo',
이 부분은 따로 필요 없을까요??
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.
수정에서는 생성페이지에서 사용했던 키인
formatData().listData.collaboratorIds.length === 0 ? 'my' : 'collabo',
이 부분은 따로 필요 없을까요??
서영님 맞습니다~!, 쿼리키를 다 넣을 수도 있지만 수정페이지에서는 타입도 변할 가능성이 있기 때문에 (예를 들어, 마이리스트에서 수정할때 콜라보를 넣어서 콜라보를 넣는 경우 또는 그 반대의 경우 등) 정확한 쿼리키를 넣으면 그 반대의 경우도 넣어줘야 하므로 여러가지 조건을 고려해야 했습니다, 그래서 수정할때는 유저아이디에 해당하는 리스트를 다시 무효화하는 방법이 더 맞다고 판단하여 적용했습니다!✍️
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.
서영님! 시간내서 꼼꼼히 확인해 주시고, 리뷰 달아주셔서 정말 감사합니다.😍
여쭤보신 부분 reply 남겼는데 혹시 궁금하신 점 있으시면 말씀 부탁드립니다. 감사합니당👍🌈
@@ -48,7 +48,7 @@ export default function OpenBottomSheetButton({ listId, isCollaborator }: OpenBo | |||
const deleteCommentMutation = useMutation({ | |||
mutationFn: () => deleteList(listId), | |||
onSuccess: () => { | |||
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.getAllList, user.id] }); | |||
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.getAllList, user.id + ''] }); |
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.
소현님, 공백 추가하신 이유가 궁금합니다!! 뒤에 공백을 추가하지 않으면 인식되지 않는 걸까요??
서영님, 맞습니다🥰 getAllList의 쿼리키 중 userId가 string이기 때문에 동일한 키로 인식하기 위해 number타입의 user.id를 문자열로 변환하기 위한 방법을 넣은 것입니다! 문자열로 변환하기 위한 여러 방법이 있겠지만 저는 위처럼 작성하는 편입니다,
혹시 추가로 궁금하신 점 있으시면 말씀 부탁드립니다!!
@@ -144,6 +145,9 @@ export default function EditPage() { | |||
} = useMutation({ | |||
mutationFn: updateList, | |||
onSettled: () => { | |||
queryClient.invalidateQueries({ | |||
queryKey: [QUERY_KEYS.getAllList, user.id + ''], |
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.
수정에서는 생성페이지에서 사용했던 키인
formatData().listData.collaboratorIds.length === 0 ? 'my' : 'collabo',
이 부분은 따로 필요 없을까요??
서영님 맞습니다~!, 쿼리키를 다 넣을 수도 있지만 수정페이지에서는 타입도 변할 가능성이 있기 때문에 (예를 들어, 마이리스트에서 수정할때 콜라보를 넣어서 콜라보를 넣는 경우 또는 그 반대의 경우 등) 정확한 쿼리키를 넣으면 그 반대의 경우도 넣어줘야 하므로 여러가지 조건을 고려해야 했습니다, 그래서 수정할때는 유저아이디에 해당하는 리스트를 다시 무효화하는 방법이 더 맞다고 판단하여 적용했습니다!✍️
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.
@ParkSohyunee 소현님! 멘션해주신 부분을 뒤늦게 확인하고 PR 리뷰가 너무 늦었습니다..! 정말 죄송합니다 👀 쿼리 무효화 부분 확인했습니다..! 정말 감사합니다!! 리팩토링을 어떻게 바로 시작하셨는지.. 정말 본 받고 싶은 갓생 소현님👍
* Design: 피드페이지 - 카테고리 스켈레톤 UI 수정 * Style: 주석 정리 * Style: 카테고리 컴포넌트 'use client' 제거 * Design: 피드페이지 - 프로필 컴포넌트 스켈레톤 UI 수정 및 isLoading으로 속성 변경 * Refactor: 모달 버튼 공통컴포넌트로 적용, 페이지 이동 Link 컴포넌트로 변경 * Fix: 다국어 기능 팔로우 -> 팔로워로 수정 * Style: 변수이름 알맞게 수정 및 src 표기 수정 * Design: 피드페이지 - 그리드컨텐츠 리스트 스켈레톤 UI 수정 * Style: 불필요한 파일 삭제, 일부 컴포넌트 컨벤션 수정 * Feat: 팔로우 버튼 disabled 적용 * Refactor: 피드페이지 리스트전체조회 쿼리 staleTime 설정, unmount시 쿼리초기화 로직 제거 * Chore: 리액트쿼리 devtools 적용 * Feat: 리스트 생성, 수정, 삭제 시 리스트 전체조회 쿼리 무효화(invalidateQueries) 로직 추가 * Refactor: 카테고리 조회 staleTime 설정, 스켈레톤 적용 시 isLoading 속성으로 변경
개요
작업 사항
ㄴ 제가 확인했을 때는 스켈레톤 중 레이아웃 시프트는 발생하지 않아서 css는 수정하지 않았습니다.
ㄴ 마이/콜라보 페이지 이동 및 카테고리 선택시에 처음을 제외하고는 api 호출 x
ㄴ 전체조회 쿼리 캐싱을 위해 리스트가 변경될때만 api를 요청할 수 있도록 추가하였습니다.
ㄴ 이 부분 서영님, 유진님, 나현님 확인 부탁드립니다. (@Eugene-A-01 , @seoyoung-min , @Nahyun-Kang )
관련 이슈
스크린샷
[ 처음에만 api를 호출하고 그 이후에는 캐싱된 쿼리를 보여줌(staleTime: 5분) ]
[ 팔로우 요청, 취소 시 UI상 변화만 있음 ]
리뷰어에게