inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

아바타 커뮤니티앱 만들기 (React Native Expo)

[Note] 낙관적 업데이트 수업 중 수정사항 안내

54-55강 수정 내용 관련 질문

78

gownsrkt11

작성한 질문수 3

0

image.png

54강 강의 노트에서 수정 버전으로 작성 시 오히려 에러가 발생하여 질문드립니다! 수정 전에 오히려 문제가 없었는데, 수정 후 발생한 문제에 대해 어떻게 해결하면 좋을 지 답변주시면 정말 감사하겠습니다:)

<에러 메시지>

'context.previousPost'은(는) 'undefined'일 수 있습니다.ts(18048)

react-native typescript expo react-hook-form react-query

답변 3

0

Kyo

에러가아니라 타입경고 아닌가요?? context?.previousPost?.id 로 해도 될것같습니다.
또는 id가 있을때로 조건을 추가해보시겠어요?

   onError: (err, newPost, context) => {
      if (context?.previousPost?.id) {
        queryClient.setQueryData(
          [queryKeys.POST, queryKeys.GET_POST, context.previousPost.id],
          context?.previousPost
        );
      }
    },

0

gownsrkt11

context?.previousPost?.id 로 진행하면 문제는 없으나, 강의 수정 자료에 올려준 그대로 해봤을 때 문제가 생겨서 질문 남겼습니다!

context?.previousPost?.id로 진행해서 계속 수강해보겠습니다.

0

Kyo

또는 onMutate내부에서 previousPost없으면 리턴하는 방법도 있습니다. 이렇게하면 context?.previousPost.id 그대로 사용하실수있습니다!

 const previousPost = queryClient.getQueryData<Post>([
        queryKeys.POST,
        queryKeys.GET_POST,
        postId,
    ]); 
if (!previousPost) return;

0

gownsrkt11

54강 강의 내용대로 수정을 해보고 싶은데, AI 인턴이 제시한 솔루션 외에는 방법이 없을까요?

 

0

인프런 AI 인턴

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

React Query를 사용하여 useLikePost 함수를 구현하신 것에 대한 문제로 보이는데요, 주어진 에러 메시지는 ‘context.previousPost’가 undefined일 수 있다는 경고를 전달하고 있습니다. 이는 주로 onError 콜백에서 이전의 상태를 롤백할 때 발생할 수 있는 문제입니다.

문제 원인

onError 함수는 매개변수 context를 사용하여 이전 상태를 복원합니다. contextpreviousPost가 존재하지 않으면, 이는 undefined가 되어 문제가 발생합니다.

해결 방법

  1. 초기화된 Context: onMutate 콜백에서 반환되는 context 객체가 올바르게 설정되었는지를 확인해주세요. context 객체는 주로 onMutate가 실행될 때 갖고 있는 상태를 반환합니다.

  2. 안전한 접근 방법 사용:

    • 옵셔널 체이닝(?.) 또는 논리 연산자(&&)를 사용하여 context.previousPost를 안전하게 확인해 보세요.

예를 들어:

onError: (err, variables, context) => {
  if (context?.previousPost) {
    queryClient.setQueryData(
      [queryKeys.POST, queryKeys.GET_POST, context.previousPost.id],
      context.previousPost,
    );
  }
},
  1. 초기 Context 설정: onMutate에서 context를 명확하게 초기화하는 것도 방법입니다.

추가 학습 자료

관련 질문과 답변 또는 강의 자료를 참조하여 React Query의 낙관적 업데이트와 오류 처리 방식에 대해 더 깊이 이해하는 데 도움이 될 수 있습니다.

다음과 같은 유사한 질문을 통해 보다 자세한 정보를 얻을 수 있습니다:
- React Query 낙관적 업데이트에서 발생할 수 있는 에러 처리 문제.

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

secureTextEntry 설정에 관해

0

55

2

expo 55 tabs 사라짐 이슈

0

76

2

백엔드도 궁금합니다!

1

84

1

댓글 버튼 하단에 고정되지 않는 이슈

0

50

1

SafeAreaView 적용 기준 문의

0

80

2

스크린 옵션 아이콘

0

55

2

[Note] 안드로이드 네비게이션 헤더 이슈 안내

0

65

2

ActionSheet

0

84

1

안드로이드 폰과 PC에서 테스트할때 화면 안보임과 오류 문의

0

98

1

iOS 빌드 후 실기기에서 앱 시작

1

68

1

[5-2] 글 목록 무한스크롤 구현하기 with InfiniteQuery 10:40/ useScrollTop(ref) 사용관련

0

80

2

클라이언트 사이드에서 세션 관련 질문

0

80

2

Android 에뮬레이터 환경설정 및 실행 (for Mac) 에러 문의

0

111

1

[5-13] useLikePost 쿼리 구현 중 Tanstack Query 관련 질문

0

62

1

Expo 54 버전 ios에서 headerLeft

1

139

2

어플 개발 후 배포 시에 주의할 사항이 있을까요?

0

78

1

코드 수정 시 ios 시뮬레이터에서 자동반영이 안 되는데 왜그럴까요?

0

91

1

텍스트가 다 상단위로 올라가있는데 어떻게 해야할까요?

0

78

2

Axios Network error...

0

148

2

강의는 52버전인데 expo가 현재 54버전이에요

0

305

1

[TIP] SafeAreaView 사용할 때마다 자꾸 ios에서 위아래가 빵꾸 나시는 분들 필독

0

232

2

키보드 이슈 관련 해결 질문

0

71

1

android header를 ios처럼 바꾸기

0

65

1

CustomButton 코드 버튼 관련 질문

0

63

1