65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
import React from 'react';
|
|
import { mockNewsData } from './NewsData'; // 导入新闻数据
|
|
|
|
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"
|
|
>
|
|
<h3 className="text-lg font-semibold text-gray-800">{title}</h3>
|
|
<p className="text-sm text-gray-500">{time}</p>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
// 使用新闻数据渲染列表
|
|
const NewsList: React.FC = () => {
|
|
return (
|
|
<div className="bg-gray-100 p-6 rounded-lg shadow-md">
|
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
|
{/* 科技新闻 */}
|
|
<div className="bg-white p-6 rounded-lg shadow-sm">
|
|
<div className="flex items-center justify-between mb-4">
|
|
<p className="text-xl font-bold text-gray-900">科技新闻</p>
|
|
<button className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-md transition duration-300 ease-in-out">
|
|
更多科技新闻
|
|
</button>
|
|
</div>
|
|
<ul className="space-y-4">
|
|
{mockNewsData.map((news, index) => (
|
|
<NewsItem key={index} title={news.title} time={news.time} url={news.url} />
|
|
))}
|
|
</ul>
|
|
</div>
|
|
|
|
{/* 社会新闻 */}
|
|
<div className="bg-white p-6 rounded-lg shadow-sm">
|
|
<div className="flex items-center justify-between mb-4">
|
|
<p className="text-xl font-bold text-gray-900">社会新闻</p>
|
|
<button className="bg-green-500 hover:bg-green-600 text-white px-4 py-2 rounded-md transition duration-300 ease-in-out">
|
|
更多社会新闻
|
|
</button>
|
|
</div>
|
|
<ul className="space-y-4">
|
|
{mockNewsData.map((news, index) => (
|
|
<NewsItem key={index} title={news.title} time={news.time} url={news.url} />
|
|
))}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default NewsList; |