const [keyword, setKeyword] = useState<string>('');
const { data } = useQuery<IAutoComplete>(
['getAutoComplete', keyword],
() => searchApi.getAutoComplete({ keyword }).then((res) => res.data),
{
staleTime: 5 * 60 * 1000,
onSuccess: (data) => {
const { papers, keyword: _keyword } = data;
if (_keyword === keyword) setAutoCompletedDatas(papers);
},
enabled: !!(keyword && keyword.length >= 2),
},
);
→ useQuery의 첫번째 인자 배열의 두번째 인자로 keyword를 넘겨서 요청시 parameter로 사용할 수 있음.
결과 : react query는 query key가 같아도 parameter가 다르면 다른 캐시에 관리한다. 자동완성 하나하나를 캐싱할 수 있음.
요청을 우다다다 날렸다면 응답이 온 순서대로 데이터를 사용하는게 아니라, 마지막에 보낸 요청에 대한 응답만 사용함.
추가로 필요한 기능 :