diff --git a/src/app/douban/page.tsx b/src/app/douban/page.tsx index 33b0207..348cfb5 100644 --- a/src/app/douban/page.tsx +++ b/src/app/douban/page.tsx @@ -75,8 +75,20 @@ function DoubanPageClient() { sort: 'T', }); - // 星期选择器状态 - const [selectedWeekday, setSelectedWeekday] = useState(''); + // 星期选择器状态 - 默认选中今天 + const getTodayWeekday = (): string => { + const today = new Date().getDay(); + // getDay() 返回 0-6,0 是周日,1-6 是周一到周六 + const weekdayMap = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + return weekdayMap[today]; + }; + + const [selectedWeekday, setSelectedWeekday] = useState(() => { + if (type === 'anime') { + return getTodayWeekday(); + } + return ''; + }); // 获取自定义分类数据 useEffect(() => { @@ -146,23 +158,29 @@ function DoubanPageClient() { setSecondarySelection(firstCategory.query); } } + setSelectedWeekday(''); // 清空星期选择 } else { // 原有逻辑 if (type === 'movie') { setPrimarySelection('热门'); setSecondarySelection('全部'); + setSelectedWeekday(''); // 清空星期选择 } else if (type === 'tv') { setPrimarySelection('最近热门'); setSecondarySelection('tv'); + setSelectedWeekday(''); // 清空星期选择 } else if (type === 'show') { setPrimarySelection('最近热门'); setSecondarySelection('show'); + setSelectedWeekday(''); // 清空星期选择 } else if (type === 'anime') { setPrimarySelection('每日放送'); setSecondarySelection('全部'); + setSelectedWeekday(getTodayWeekday()); // 默认选中今天 } else { setPrimarySelection(''); setSecondarySelection('全部'); + setSelectedWeekday(''); // 清空星期选择 } } @@ -624,6 +642,15 @@ function DoubanPageClient() { } else { setPrimarySelection(value); } + + // 动漫类型:切换到"每日放送"时设置当天,切换到其他分类时清空星期选择 + if (type === 'anime') { + if (value === '每日放送') { + setSelectedWeekday(getTodayWeekday()); + } else { + setSelectedWeekday(''); + } + } } } }, diff --git a/src/app/page.tsx b/src/app/page.tsx index c11bc16..ee56e4d 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -369,40 +369,81 @@ function HomeClient() { - {/* 番剧时间表 */} - {bangumiCalendarData.length > 0 && ( -
-
-

- 番剧时间表 -

-
- {bangumiCalendarData.map((day) => ( -
-

- {day.weekday.en} -

- - {day.items.map((item) => ( + {/* 每日新番放送 */} +
+
+

+ 新番放送 +

+ + 查看更多 + + +
+ + {loading + ? // 加载状态显示灰色占位数据 + Array.from({ length: 8 }).map((_, index) => ( +
+
+
+
+
+
+ )) + : // 展示当前日期的番剧 + (() => { + // 获取当前日期对应的星期 + const today = new Date(); + const weekdays = [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + ]; + const currentWeekday = weekdays[today.getDay()]; + + // 找到当前星期对应的番剧数据 + const todayAnimes = + bangumiCalendarData.find( + (item) => item.weekday.en === currentWeekday + )?.items || []; + + return todayAnimes.map((anime, index) => (
- ))} -
-
- ))} -
- )} + )); + })()} + + )}