Files
teach_sys_Demo/src/pages/PublicCourses/index.jsx
KQL c969677ef6 feat: 优化课程列表功能和班级排名样式
- 修复课程列表单元展开/收起功能
- 优化日历页面跳转到课程列表的延迟时间
- 恢复复合技能课和垂直技能课的分割线及收缩功能
- 添加班级排名第一二三名的特殊样式图标
- 修复Collapse组件onChange事件处理
- 优化课程自动选中和滚动定位功能

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 15:51:09 +08:00

57 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState, useEffect, useRef } from "react";
import { useSearchParams } from "react-router-dom";
import CoursesVideoPlayer from "@/components/CoursesVideoPlayer";
import PublicCourseList from "@/components/PublicCourseList";
import { mockData } from "@/data/mockData";
import "./index.css";
const PublicCourses = () => {
// 默认不选中任何课程,显示黑屏状态
const [selectedCourse, setSelectedCourse] = useState(null);
const [searchParams] = useSearchParams();
const publicCourseListRef = useRef(null);
// 检查URL参数如果有courseId则自动打开对应课程
useEffect(() => {
const courseId = searchParams.get('courseId');
const courseTitle = searchParams.get('courseTitle');
console.log('PublicCourses - URL params:', { courseId, courseTitle });
if (courseId || courseTitle) {
// 需要给组件时间加载数据
const timer = setTimeout(() => {
if (publicCourseListRef.current) {
console.log('PublicCourses - Calling selectCourse via ref');
publicCourseListRef.current.selectCourse(courseId, courseTitle);
}
}, 500); // 等待数据加载
return () => clearTimeout(timer);
}
}, [searchParams]);
const handleCourseClick = (course) => {
setSelectedCourse(course);
};
return (
<div className="public-courses-page">
<div className="public-courses-content">
<CoursesVideoPlayer
selectedCourse={selectedCourse}
teacherData={mockData.teacherData}
unitPosters={mockData.publicCourseBackgrounds}
isPublicCourse={true}
/>
<PublicCourseList
ref={publicCourseListRef}
onCourseClick={handleCourseClick}
/>
</div>
</div>
);
};
export default PublicCourses;