// components/Header.tsx import { motion, useScroll, useTransform } from "framer-motion"; import { useContext, useEffect, useState } from "react"; import { CourseDetailContext } from "../CourseDetailContext"; import { Button } from "antd"; export const CourseDetailHeader = () => { const { scrollY } = useScroll(); const [lastScrollY, setLastScrollY] = useState(0); const { course, isHeaderVisible, setIsHeaderVisible, lecture } = useContext(CourseDetailContext); useEffect(() => { const updateHeader = () => { const current = scrollY.get(); const direction = current > lastScrollY ? "down" : "up"; if (direction === "down" && current > 100) { setIsHeaderVisible(false); } else if (direction === "up") { setIsHeaderVisible(true); } setLastScrollY(current); }; // 使用 requestAnimationFrame 来优化性能 const unsubscribe = scrollY.on("change", () => { requestAnimationFrame(updateHeader); }); return () => { unsubscribe(); }; }, [lastScrollY, scrollY, setIsHeaderVisible]); return (

{course?.title}

); }; export default CourseDetailHeader;