inflearn logo
강의

講義

知識共有

一口サイズで切って食べるReact.js実践プロジェクト - SNS編

(9.4) プロフィール編集機能の実装 - 機能

프로필 수정 후 post item 의 글들에서 수정된 프로필 업데이트 반영

解決済みの質問

70

hanbrang

投稿した質問数 12

0

프로필 수정후 프로필 디테일 화면의 포스트 아이템들에서는 수정된 프로필 내용이 반영이 안되는 것이 확인됩니다.

시나리오대로라면 프로필 수정 후 포스트아이템의 프로필 ui 도 업데이트 해주는게 자연스러운듯 하여

스크린샷 2026-02-21 오후 6.24.03.png.webp

위와 같이 아래 코드를 추가해 주었습니다.

맞을까요?

queryClient.resetQueries({
        queryKey: QUERY_KEYS.post.userList(updatedProfile.id),
      });

react typescript react-query supabase zustand 지금-베스트

回答 2

1

winterlood

안녕하세요 hanbrang님 이정환입니다.

넵 요렇게 처리하시면 프로필이 변경된 유저가 작성한 PostItem에도 변경된 프로필이 잘 적용될 것 같습니다! 깔끔하네요 😀

그러나 resetQueries 보다는 invalidateQueries 사용을 더 권장드립니다.

아마 강의 중 use-create-post.ts 파일에서 resetQueries 메서드를 사용했었기 때문에 동일하게 사용하신걸로 보이는데요, 이때는 무한스크롤 피드의 데이터 자체를 모두 초기화 해야 했기 때문에 resetQueries를 예외적으로 사용했습니다.

따라서 이번처럼 단순 재 호출만 필요한 쿼리가 있다면 resetQueries 보다는 invalidateQueries 사용을 추천드립니다.

1

hanbrang

권장에 감사드립니다~ 수정배포할게요.

즐거운 하루 보내세요~

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다. hanbrang님.

프로필 수정 후, 프로필 디테일 화면의 포스트 아이템들에서도 해당 변경 사항이 반영되도록 하고 싶으시군요. 이 문제는 React Query와 같은 데이터 패칭 라이브러리를 사용할 때 발생하는 일반적인 과제 중 하나입니다.

문제의 원인 및 해결 방안

  1. 상태 및 캐시 관리:

    • 프로필 업데이트 후, 포스트 리스트에서도 최신 프로필 정보를 반영하려면 해당 캐시를 새로 갱신해야 합니다. useMutation을 사용할 때 성공 콜백 안에서 관련 쿼리를 무효화하여 최신 데이터를 가져오도록 합니다.
  2. 쿼리 무효화 (invalidateQueries):

    • queryClient.invalidateQueries를 사용하여 특정한 queryKey를 무효화하면, 해당 쿼리 키와 관련된 데이터가 다시 패칭됩니다.
  3. resetQueries vs invalidateQueries:

    • resetQueries는 캐시된 데이터를 초기화 할 때 사용할 수 있지만, 보통 새로운 데이터를 서버에서 가져오는 데는 invalidateQueries를 사용합니다. 그래서 invalidateQueries를 사용하는 것이 더욱 자연스럽습니다.

코드 수정 제안

아래와 같이 useMutationonSuccess 콜백에서 invalidateQueries를 통해 최신 정보를 불러오도록 조정할 수 있습니다:

onSuccess: () => {
  queryClient.invalidateQueries({
    queryKey: QUERY_KEYS.post.userList(updatedProfile.id),
  });
}

실천할 주요 사항:

  • 적절한 쿼리 키를 사용하여 관련 데이터를 정확하게 갱신할 수 있습니다.
  • onError와 같은 방법을 추가하여 실패 상황에서도 기존 상태를 유지하거나 사용자에게 피드백을 줄 수 있습니다.

관련 예제 및 해결 방법을 아래 링크에서 확인해 보세요:

저는 질문자님의 이해를 돕고자 지식 공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식 공유자께서 답변해 주실 것입니다.

useMutation 적용 후 새로운 글 등록시 content가 안보여요

0

25

2

6.8 zustand 세션 질문입니다.

0

69

2

next.js 강의에서도 리액트 라이브러리들을 다뤄주시나요?

0

57

2

shadcn에서 radix ui와 base ui 차이는 뭔가요?

0

205

2

updateTodo 함수 생성시 화살표 함수 사용 안하는 이유

0

61

2

4.11 바로 투두 삭제가 안됨 질문

0

73

3

매개변수 updatedTodo 관련 질문

0

55

3

인증 정보가 만료되었을 때 라우트 가드 처리가 궁금합니다!

0

72

2

supabase를 사용하지 않을 경우 세션 데이터의 변경을 감지하고 스토어에 보관하는 방법이 궁금합니다!

0

58

2

4.6 id를 string으로 변경시 오류

0

53

2

리액트 타입스크립트 관련 질문있습니다.

0

53

1

소셜 로그인 구현하기 관련하여 질문이 있습니다!

0

87

2

ui 파일 질문드립니다.

0

63

1

tanstack query devtools에서 질문있습니다!

0

56

2

댓글 삭제 시 isPending 질문

0

55

2

두번째 예외상황에 대해 질문있습니다!

0

54

1

리액트 쿼리 질문입니다

0

56

2

개발자도구에서 components 가 안보입니다.

0

78

3

state 관리에 대한 정리

0

69

3

[(2.4) Shadcn/ui를 소개합니다] 강의 Shadcn 세팅 관련 질문 있습니다.

0

147

3

like 테이블에서 왜 create_at이 필요한지 궁금합니다.

0

66

1

삭제가 바로 안되네요ㅠ

0

55

2

access 토큰은 꼭 소셜서버로부터 받아서 사용해야만하나요?!

0

72

2

전역 모달이 여러 개일 경우 모달 프로바이더는 몇 개가 필요한가요?

0

53

1