버튼에 현재 상태가 표시될 수 있도록 isBest라는 변수를 설정하고 상세페이지 이동 후에도 history가 남아있게끔 sessionStorage를 이용하여 인기순/최신순 상태저장.
const [isBest, setIsBest] = useState("");
// 인기순
const activeBestBtn = () => {
sessionStorage.setItem("userWatching", "viewCount");
setIsBest("viewCount");
};
// 최신순
const inactiveBestBtn = () => {
sessionStorage.setItem("userWatching", "createdAt");
setIsBest("createdAt");
};
// 전체목록불러오기
const getList = async () => {
const items = query(
collection(dbService, "recipe"),
orderBy(isBest === "viewCount" ? "viewCount" : "createdAt", "desc")
);
const querySnapshot = await getDocs(items);
const newData = querySnapshot.docs.map((doc) => ({
...doc.data(),
id: doc.id,
}));
setCurrentItems(newData);
};
return (
<ul className="flex justify-end absolute right-0">
<li
className={cls(
"sorted-btn",
isBest === "viewCount"
? "bg-brand100 text-white"
: "text-mono80"
)}
onClick={activeBestBtn}
>
인기순
</li>
<li
className={cls(
"sorted-btn",
isBest === "createdAt"
? "bg-brand100 text-white"
: "text-mono80"
)}
onClick={inactiveBestBtn}
>
최신순
</li>
</ul>