서버에서 받아온 데이터를 그대로 사용하는 경우도 있지만, 클라이언트 내에서 정한 기준으로 재가공한 데이터를 사용하고 싶을 때가 있다.
예를 들어 사용자가 선택한 filter 값에 의해 가공된 데이터를 캐시하고자 하는 상황이다.
서버에서 받아온 데이터를 useQuery 내의 option인 select를 이용하여, 사용자가 정한 filter 값으로 재가공하여 캐시로 fetch한다.
const [filter, setFilter] = useState('all')
const selectFn = useCallback((data) => filterFn(data, filter), [filter])
// filter가 all일 때는 가공하지 않는다는 조건을 붙인다.
const { data } = useQuery(queryKey, queryFn, { select: filter === 'all' ? undefined : selectFn })