게시글 인기순 최신순 정렬(feat : firebase)

bebrain·2023년 3월 6일
0

버튼에 현재 상태가 표시될 수 있도록 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>

0개의 댓글