Develop/React Native

Apollo Client query 시 주의점 (variables)

안다희 2023. 1. 21. 11:41
728x90

상황

query에 요구되는 variables가 있는데, 항상 같은 값으로 보내면 refetch되지 않는다.

같은 값으로 보냈던 이유: readQuery로 캐시 사용 위해

-> 캐시 사용을 포기하고 variables를 항상 다른 값으로 보낸다.

 

1️⃣ : 값이 항상 동일해서 refetch해도 query call 처리가 안된다?
2️⃣ : 값이 항상 달라지기 때문에 refetch하면 query call 처리가 잘 된다.

원인

1. apollo 라이브러리의 결함

또는

2. 프로젝트 내 apollo 설정 문제? (cache도 가끔 제대로 업데이트되지 않는데, 다른 프로젝트에서는 cache가 잘만 동작한다.)

 

어쨌든, 2️⃣로 하니까 해결됐음!

const [query, { loading, data }] = useLazyQuery<
    Query,
    QueryGetRoutineStorageInfo2Args
  >(GET_ROUTINE_STORAGE_INFO, {
    fetchPolicy: 'cache-and-network',
    onCompleted: d => {
	  console.log('completed getRoutineStorageInfo', d);
    },
    onError: e => {
	  console.log('error getRoutineStorageInfo', d);
    },
  });
  const getRoutineStorageInfo = () => {
    console.log('called getRoutineStorageInfo');
    // const dateISO = dayjs().format("YYYY-MM-DD"); // 1️⃣😡 같은 날짜일 때, 값이 항상 "YYYY-MM-DD" 형식으로 동일해서 refetch해도 query call 처리가 안된다?
    const dateISO = dayjs().toISOString(); // 2️⃣😃 값이 항상 달라지기 때문에 refetch하면 query call 처리가 잘 된다.
    query({ variables: { dateISO } });
  };
@apollo/client 3.7.0
출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]