| import React from 'react'; | |
| import { useNavigate, useLocation } from 'react-router-dom'; | |
| import './AnnouncementDetail.css'; | |
| const AnnouncementDetail = () => { | |
| const navigate = useNavigate(); | |
| const location = useLocation(); | |
| const { state } = useLocation(); | |
| const announcement = state?.announcement; | |
| const handleBack = () => { | |
| const fromTab = location.state?.fromTab; // 从跳转时传递的 state 中获取 | |
| if (fromTab) { | |
| navigate(`/dashboard/${fromTab}`); // 明确返回对应标签页 | |
| } else { | |
| navigate(-1); // 保底策略 | |
| } | |
| } | |
| if (!announcement) { | |
| return ( | |
| <div className="announcement-container"> | |
| <button className="back-button" onClick={() => navigate(-1)}> | |
| ← 返回公告区 | |
| </button> | |
| <div className="error-message">公告加载失败,请返回重试</div> | |
| </div> | |
| ); | |
| } | |
| return ( | |
| <div className="announcement-container"> | |
| <button className="back-button" onClick={handleBack}> | |
| ← 返回 | |
| </button> | |
| <div className="announcement-detail"> | |
| <div className="announcement-header"> | |
| <h1>{announcement.title}</h1> | |
| <div className="announcement-meta"> | |
| <span className="category-badge">{announcement.category}</span> | |
| <span>发布人:{announcement.author}</span> | |
| <span>发布日期:{announcement.date}</span> | |
| </div> | |
| </div> | |
| <div className="announcement-content"> | |
| {announcement.content.split('\n').map((paragraph, i) => ( | |
| <p key={i}>{paragraph}</p> | |
| ))} | |
| </div> | |
| </div> | |
| </div> | |
| ); | |
| }; | |
| export default AnnouncementDetail; | |