mutation 후 데이터 갱신을 위해서 invalidateQueries 를 호출 했는데, 동작하지 않았다.

useQuery(['a', 'b', { type: 'basic', id}], ...)
useQuery(['a', 'b', { type: 'detail',id}], ...)

위 처럼 사용하고 있어서 한꺼번에 갱신하고자 아래 처럼 호출을 하였는데 검색된 쿼리가 없어 아무 데이터도 갱신하지 않았다.

queryClient.invalidateQueries(['a', 'b', {id}]);

알고 보니 useQuery 를 호출 할때 id type 은 string 이었고, invalidateQueries 를 호출할 때 id type 은 number 였었다.

키를 검색할 때 Object 내부를 비교하는데 이 때 === 연산을 주로 사용하여 검색하기 때문에, type 까지 일치해야 한다.

useQuery 를 호출하는 쪽은 useParam 을 사용하여 처리하고 있었고, invalidateQuiries 를 호출하는 쪽은 이 id 를 number 로 변환해서 넘겨주고 있었기에, 이러한 상황이 발생하였다.

쿼리키는 좋은 것이지만 타입도 잘 생각하며 써야 겠다.