blob: 8e906721cb7a1dce0ad3bc291d6d011fd63b6e5a [file] [log] [blame]
Akane121765b61a72025-05-17 13:52:25 +08001import React from 'react';
2import { useNavigate, useLocation } from 'react-router-dom';
3import './AnnouncementDetail.css';
4
5const AnnouncementDetail = () => {
6 const navigate = useNavigate();
7const location = useLocation();
8 const { state } = useLocation();
9 const announcement = state?.announcement;
10 const handleBack = () => {
11 const fromTab = location.state?.fromTab; // 从跳转时传递的 state 中获取
12 if (fromTab) {
13 navigate(`/dashboard/${fromTab}`); // 明确返回对应标签页
14 } else {
15 navigate(-1); // 保底策略
16 }
17}
18
19
20
21 if (!announcement) {
22 return (
23 <div className="announcement-container">
24 <button className="back-button" onClick={() => navigate(-1)}>
25 &larr; 返回公告区
26 </button>
27 <div className="error-message">公告加载失败,请返回重试</div>
28 </div>
29 );
30 }
31
32 return (
33 <div className="announcement-container">
34 <button className="back-button" onClick={handleBack}>
35 &larr; 返回
36 </button>
37
38 <div className="announcement-detail">
39 <div className="announcement-header">
40 <h1>{announcement.title}</h1>
41 <div className="announcement-meta">
42 <span className="category-badge">{announcement.category}</span>
43 <span>发布人:{announcement.author}</span>
44 <span>发布日期:{announcement.date}</span>
45 </div>
46 </div>
47
48 <div className="announcement-content">
49 {announcement.content.split('\n').map((paragraph, i) => (
50 <p key={i}>{paragraph}</p>
51 ))}
52 </div>
53 </div>
54 </div>
55 );
56};
57
58export default AnnouncementDetail;
59
60
61