Akane1217 | 65b61a7 | 2025-05-17 13:52:25 +0800 | [diff] [blame^] | 1 | import React from 'react';
|
| 2 | import { useNavigate, useLocation } from 'react-router-dom';
|
| 3 | import './AnnouncementDetail.css';
|
| 4 |
|
| 5 | const AnnouncementDetail = () => {
|
| 6 | const navigate = useNavigate();
|
| 7 | const 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 | ← 返回公告区
|
| 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 | ← 返回
|
| 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 |
|
| 58 | export default AnnouncementDetail;
|
| 59 |
|
| 60 |
|
| 61 | |