news/app/components/list/List.tsx

52 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-11-18 17:36:30 +08:00
import React from 'react';
2025-11-19 11:05:18 +08:00
import { grassNewsData } from './NewsData'; // 引入基层新闻数据
2025-11-18 17:36:30 +08:00
interface NewsProps {
title?: string;
description?: string;
time?: string;
type?: string;
url?: string;
}
const NewsItem: React.FC<NewsProps> = ({ title = '', time = '', url = '' }) => {
return (
<div className="mb-4">
<div
onClick={() => url && window.open(url)}
className="flex items-center justify-between hover:text-blue-600 cursor-pointer transition duration-300 ease-in-out"
>
2025-11-19 12:39:43 +08:00
{/* 标题部分:左侧 */}
<div className="flex items-center">
<div className="w-2 h-2 bg-white rounded-full mr-2"></div>
2025-11-19 16:06:11 +08:00
<h3 className="text-xl font-semibold text-white hover:text-blue-600">{title}</h3>
2025-11-19 12:39:43 +08:00
</div>
{/* 时间部分:右侧 */}
2025-11-19 16:06:11 +08:00
<p className="text-xl text-white hover:text-blue-600 text-right">{time}</p>
2025-11-18 17:36:30 +08:00
</div>
</div>
);
};
2025-11-19 11:05:18 +08:00
// 使用基层新闻数据渲染列表
2025-11-18 17:36:30 +08:00
const List: React.FC = () => {
2025-11-19 11:05:18 +08:00
// 调用 grassNewsData 函数获取基层新闻数据
const baseNews = grassNewsData();
2025-11-18 17:36:30 +08:00
return (
2025-11-19 11:05:18 +08:00
<div>
<div>
<div className="p-6">
2025-11-18 17:36:30 +08:00
<ul className="space-y-4">
2025-11-19 11:05:18 +08:00
{baseNews.map((news) => (
<NewsItem key={news.id} title={news.title} time={news.time} url={news.url} />
2025-11-18 17:36:30 +08:00
))}
</ul>
</div>
</div>
</div>
);
};
export default List;