Akane1217 | 65b61a7 | 2025-05-17 13:52:25 +0800 | [diff] [blame] | 1 | import React, { useState } from 'react';
|
| 2 | import { useNavigate,useLocation } from 'react-router-dom';
|
| 3 | import './personalSubpage.css';
|
| 4 |
|
| 5 | const Setting = ({ onLogout }) => {
|
| 6 | const navigate = useNavigate();
|
| 7 | const location = useLocation();
|
| 8 | // 模拟数据
|
| 9 | const [formData, setFormData] = useState({
|
| 10 | username: 'user123',
|
| 11 | email: 'user@example.com',
|
| 12 | notification: true
|
| 13 | });
|
| 14 |
|
| 15 | const handleChange = (e) => {
|
| 16 | const { name, value, type, checked } = e.target;
|
| 17 | setFormData(prev => ({
|
| 18 | ...prev,
|
| 19 | [name]: type === 'checkbox' ? checked : value
|
| 20 | }));
|
| 21 | };
|
| 22 |
|
| 23 | const handleSubmit = (e) => {
|
| 24 | e.preventDefault();
|
| 25 | alert('设置已保存');
|
| 26 | };
|
| 27 |
|
| 28 | const handleBack = () => {
|
| 29 | // 返回个人中心,并携带来源标记
|
| 30 | navigate('/personal', {
|
| 31 | state: {
|
| 32 | fromSubpage: true, // 标记来自子页面
|
| 33 | dashboardTab: location.state?.dashboardTab // 保留Dashboard的标签页状态
|
| 34 | },
|
| 35 | replace: true // 替换当前历史记录
|
| 36 | });
|
| 37 | };
|
| 38 |
|
| 39 | return (
|
| 40 | <div className="subpage-container">
|
| 41 | <button className="back-button" onClick={(handleBack)}>
|
| 42 | ← 返回个人中心
|
| 43 | </button>
|
| 44 |
|
| 45 | <h2 className="page-title">账号设置</h2>
|
| 46 |
|
| 47 | <form onSubmit={handleSubmit}>
|
| 48 | <div className="form-group">
|
| 49 | <label className="form-label">用户名</label>
|
| 50 | <input
|
| 51 | type="text"
|
| 52 | name="username"
|
| 53 | value={formData.username}
|
| 54 | onChange={handleChange}
|
| 55 | className="form-input"
|
| 56 | />
|
| 57 | </div>
|
| 58 |
|
| 59 | <div className="form-group">
|
| 60 | <label className="form-label">电子邮箱</label>
|
| 61 | <input
|
| 62 | type="email"
|
| 63 | name="email"
|
| 64 | value={formData.email}
|
| 65 | onChange={handleChange}
|
| 66 | className="form-input"
|
| 67 | />
|
| 68 | </div>
|
| 69 |
|
| 70 | <div className="form-group">
|
| 71 | <label className="form-label">
|
| 72 | <input
|
| 73 | type="checkbox"
|
| 74 | name="notification"
|
| 75 | checked={formData.notification}
|
| 76 | onChange={handleChange}
|
| 77 | />
|
| 78 | 接收邮件通知
|
| 79 | </label>
|
| 80 | </div>
|
| 81 |
|
| 82 | <div className="form-actions">
|
| 83 | <button type="submit" className="action-btn">
|
| 84 | 保存设置
|
| 85 | </button>
|
| 86 | <button
|
| 87 | type="button"
|
| 88 | className="action-btn danger-btn"
|
| 89 | onClick={onLogout}
|
| 90 | >
|
| 91 | 退出登录
|
| 92 | </button>
|
| 93 | </div>
|
| 94 | </form>
|
| 95 | </div>
|
| 96 | );
|
| 97 | };
|
| 98 |
|
| 99 | export default Setting; |