22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 1 | import React, { useState } from 'react'; |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 2 | import Header from '../../components/Header'; |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 3 | import './NewUserGuide.css'; |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 4 | import NewbieTasks from './NewbieTasks.jsx'; |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 5 | |
| 6 | const NewUserGuide = () => { |
| 7 | const [activeTab, setActiveTab] = useState('terms'); |
| 8 | |
| 9 | const renderContent = () => { |
| 10 | switch (activeTab) { |
| 11 | case 'terms': |
| 12 | return ( |
| 13 | <div className="guide-content"> |
| 14 | <h2>名词解释</h2> |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 15 | <p>在echo Torrent中,我们使用以下术语:</p> |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 16 | <ul> |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 17 | <li><strong>Tracker:</strong> 监测用户流量的服务器。</li> |
| 18 | <li><strong>种子:</strong> 扩展名为.torrent的文件,主要包含文件信息、Tracker信息等。在本站发布的种子。每个用户下载都会下载包含特定信息的种子以便Tracker记录不同用户的流量情况。</li> |
| 19 | <li><strong>流量:</strong> 分为上传量(通过本站Tracker向其他用户上传的数据总量)和下载量(通过本站Tracker从其他用户下载的数据总量)。</li> |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 20 | <li><strong>做种:</strong> 指上传资源供他人下载。</li> |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 21 | <li><strong>分享率:</strong> 分享率=上传量/下载量</li> |
| 22 | <li><strong>经验值:</strong> 用于奖励活跃用户的虚拟积分。</li> |
| 23 | <li><strong>金币:</strong> 用于兑换虚拟物品的虚拟货币,可在个人中心充值。</li> |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 24 | </ul> |
| 25 | </div> |
| 26 | ); |
| 27 | case 'tutorial': |
| 28 | return ( |
| 29 | <div className="guide-content"> |
| 30 | <h2>详细教程</h2> |
| 31 | <ol> |
| 32 | <li>注册并完善个人资料</li> |
| 33 | <li>浏览并下载感兴趣的种子资源</li> |
| 34 | <li>做种、评论、评分获得积分</li> |
| 35 | <li>发布你的第一个种子</li> |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 36 | </ol> |
| 37 | </div> |
| 38 | ); |
| 39 | case 'tasks': |
| 40 | return ( |
| 41 | <div className="guide-content"> |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 42 | <NewbieTasks /> |
| 43 | {/* ✅ 使用真实组件替换静态任务列表 */} |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 44 | </div> |
| 45 | ); |
| 46 | default: |
| 47 | return null; |
| 48 | } |
| 49 | }; |
| 50 | |
| 51 | return ( |
| 52 | <div className="new-user-guide-page"> |
| 53 | <Header /> |
| 54 | <div className="guide-container"> |
| 55 | <div className="guide-nav"> |
| 56 | <button |
| 57 | className={activeTab === 'terms' ? 'active' : ''} |
| 58 | onClick={() => setActiveTab('terms')} |
| 59 | > |
| 60 | 名词解释 |
| 61 | </button> |
| 62 | <button |
| 63 | className={activeTab === 'tutorial' ? 'active' : ''} |
| 64 | onClick={() => setActiveTab('tutorial')} |
| 65 | > |
| 66 | 详细教程 |
| 67 | </button> |
| 68 | <button |
| 69 | className={activeTab === 'tasks' ? 'active' : ''} |
| 70 | onClick={() => setActiveTab('tasks')} |
| 71 | > |
Krishya | 34493be | 2025-06-09 22:45:46 +0800 | [diff] [blame] | 72 | 用户等级 |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 73 | </button> |
| 74 | </div> |
22301009 | 01d3ff9 | 2025-06-07 16:16:26 +0800 | [diff] [blame] | 75 | <div className="guide-main"> |
| 76 | {renderContent()} |
| 77 | </div> |
22301009 | 3d8132e | 2025-06-07 11:34:38 +0800 | [diff] [blame] | 78 | </div> |
| 79 | </div> |
| 80 | ); |
| 81 | }; |
| 82 | |
| 83 | export default NewUserGuide; |