queryClient.invalidateQueries({ queryKey: [QUERY_KEY_GET_PROJECT_DETAIL], })
쿼리키는 고유해야 한다. 쿼리키는 배열로 관리되고, 여러가지 인자를 동적으로 받아온다면 지금 프로젝트를 예로들어 1,2,3,4,5 번 프로젝트를 돌아니다보면 캐시에 해당 프로젝트 상세정보가 저장되어 있을 것이다.
현재는 프로젝트 상세정보 내에서 댓글이나 좋아요와 같은 요청들을 하면 invalidate시에 인자로 projectId를 명시하지 않고 있다.
이러면 접두사 쿼리키와 관련된 모든 쿼리를 무효화 시킨다.
즉, 1번 프로젝트 에서 댓글을 보내면 1,2,3,4,5번 프로젝트의 상세정보를 모두 다시 서버에서 받아온다는 뜻이다. 이것은 낭비다.
따라서, invalidate로 쿼리를 무효화할때 쿼리키는 물론이고 projectId를 명시하자.
queryClient.invalidateQueries({ queryKey: [QUERY_KEY_GET_PROJECT_DETAIL, projectId], })