Query Key
query key는 tanstack query에서 매우 중요한 부분을 차지한다.
key를 사용해서 데이터를 캐싱, 관리하기 때문에 신중한 관리가 필요하다.
- key 값으로 데이터를 관리하기 때문에 key 값은 유니크한 값으로 지정해야하며 다른 key 값과 중복해서 사용하면 안된다.
- key 값을 배열로 사용하여 의도를 명확하게 하고, 여러 값을 조합하여 key를 유연하게 관리할 수 있다.
- key 값은 값이 변경될 때 데이터를 다시 불러오기 때문에 필터 같이 데이터가 자주 변하는 기능에는 변수로 key 값을 지정해줘야 한다.
- key 값의 유지 보수와 충돌 방지를 위해 개별 파일을 사용하여 관리하는 것이 유용하다.
- key를 객체로 관리하면 순서에 상관이 없지만 배열로 관리하면 값이 같더라도 순서가 다르면 다른 key로 인식하기 때문에 순서에 유의해야한다.
// 예시 // 다음 세 가지는 모두 같은 쿼리로 인식한다 useQuery({ queryKey: ['posts', { username, userEmail }], ... }); useQuery({ queryKey: ['posts', { userEmail, username }], ... }); useQuery({ queryKey: ['posts', { userEmail, username, other: undefined }], ... }); // 다음 세 가지는 모두 다른 쿼리로 인식한다 useQuery({ queryKey: ['posts', username, userEmail], ... }); useQuery({ queryKey: ['posts', userEmail, username], ... }); useQuery({ queryKey: ['posts', undefined, userEmail, username], ... });