- 모든 API 파일에서 mock 제거, 실제 백엔드 호출로 전환 - 공지사항 날짜 ISO 포맷에서 날짜만 표시하도록 수정 - VITE_API_BASE_URL을 https://a301.api.tolelom.xyz로 변경 (.env, gitignore) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import { useState, useEffect } from 'react';
|
|
import { getAnnouncements } from '../api/announcements';
|
|
import './AnnouncementBoard.css';
|
|
|
|
export default function AnnouncementBoard() {
|
|
const [list, setList] = useState([]);
|
|
const [expanded, setExpanded] = useState(null);
|
|
|
|
useEffect(() => {
|
|
getAnnouncements().then(setList);
|
|
}, []);
|
|
|
|
return (
|
|
<section className="announcement-board">
|
|
<h2 className="announcement-heading">공지사항</h2>
|
|
<ul className="announcement-list">
|
|
{list.map((item) => (
|
|
<li key={item.id} className="announcement-item">
|
|
<button
|
|
className="announcement-row"
|
|
onClick={() => setExpanded(expanded === item.id ? null : item.id)}
|
|
>
|
|
<span className="announcement-title">{item.title}</span>
|
|
<span className="announcement-date">{item.createdAt?.slice(0, 10)}</span>
|
|
</button>
|
|
{expanded === item.id && (
|
|
<div className="announcement-content">{item.content}</div>
|
|
)}
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</section>
|
|
);
|
|
}
|