실제로 리액트쿼리를 적용해 데이터를 캐시하는 과정과
캐시 적용 전 후 차이를 봅시다
import ProfileItem from "./ProfileItem";
import { User } from "../types/User";
import { useEffect, useState } from "react";
import { fetchUsers } from "../utils/users";
function Basic() {
const [users, setUser] = useState<User[]>([]);
const [isLoading, setIsLoading] = useState(true);
const prepareUsers = async () => {
const result = await fetchUsers();
setUser(result);
setIsLoading(false);
};
useEffect(() => {
prepareUsers();
}, []);
const userMap = users.map((user, idx) => {
return <ProfileItem key={idx} {...user} />;
});
return (
<section className="w-80">
<h2 className="text-2xl font-bold justify-self-center">쿼리 사용 전</h2>
<ul>{isLoading ? <span>Loading...</span> : userMap}</ul>
</section>
);
}
export default Basic;
import { useQuery } from "@tanstack/react-query";
import ProfileItem from "./ProfileItem";
import { fetchUsers } from "../utils/users";
function Query() {
const {
isLoading,
data: users,
} = useQuery({
queryKey: ["users"],
queryFn: fetchUsers,
});
const userMap = (users ?? []).map((user, idx) => {
return <ProfileItem key={idx} {...user} />;
});
return (
<section className="w-80">
<h2 className="text-2xl font-bold justify-self-center">쿼리 사용 후</h2>
<ul>{isLoading ? <span>Loading...</span> : userMap}</ul>
</section>
);
}
export default Query;
확실히 또 이론 공부보다 직접 작성해 봐야한다고 느꼈다
확실히 또 이론 공부보다 직접 작성해 봐야한다고 느꼈다222
지난 주에 올린 글로 리액트쿼리 사용 법을 다 알았다고 생각하고 오늘 글은 간단하겠지 했는데,,,,



const { isLoading, data: users } = useQuery({
queryKey: ["users"],
queryFn: fetchUsers,
staleTime: 1000 * 60 * 4 // 4분 동안 불러온 데이터 유지
});
const { isLoading, data: users } = useQuery({
queryKey: ["users"],
queryFn: fetchUsers,
staleTime: 1000 * 60 * 4,
placeholderData: (prevData) => prevData,
});
사실 원래 글에 덧붙이려고 하다가 리액트쿼리 캐시 적용이 내가 원하는 생각한대로 진행되지 않아 따로 빼봤다
별 거 아닐 수도 있는데 기록용으로 작성해 봤다