import React, { useState } from 'react'; | |
import { useNavigate,useLocation } from 'react-router-dom'; | |
import './personalSubpage.css'; | |
const Setting = ({ onLogout }) => { | |
const navigate = useNavigate(); | |
const location = useLocation(); | |
// 模拟数据 | |
const [formData, setFormData] = useState({ | |
username: 'user123', | |
email: 'user@example.com', | |
notification: true | |
}); | |
const handleChange = (e) => { | |
const { name, value, type, checked } = e.target; | |
setFormData(prev => ({ | |
...prev, | |
[name]: type === 'checkbox' ? checked : value | |
})); | |
}; | |
const handleSubmit = (e) => { | |
e.preventDefault(); | |
alert('设置已保存'); | |
}; | |
const handleBack = () => { | |
// 返回个人中心,并携带来源标记 | |
navigate('/personal', { | |
state: { | |
fromSubpage: true, // 标记来自子页面 | |
dashboardTab: location.state?.dashboardTab // 保留Dashboard的标签页状态 | |
}, | |
replace: true // 替换当前历史记录 | |
}); | |
}; | |
return ( | |
<div className="subpage-container"> | |
<button className="back-button" onClick={(handleBack)}> | |
← 返回个人中心 | |
</button> | |
<h2 className="page-title">账号设置</h2> | |
<form onSubmit={handleSubmit}> | |
<div className="form-group"> | |
<label className="form-label">用户名</label> | |
<input | |
type="text" | |
name="username" | |
value={formData.username} | |
onChange={handleChange} | |
className="form-input" | |
/> | |
</div> | |
<div className="form-group"> | |
<label className="form-label">电子邮箱</label> | |
<input | |
type="email" | |
name="email" | |
value={formData.email} | |
onChange={handleChange} | |
className="form-input" | |
/> | |
</div> | |
<div className="form-group"> | |
<label className="form-label"> | |
<input | |
type="checkbox" | |
name="notification" | |
checked={formData.notification} | |
onChange={handleChange} | |
/> | |
接收邮件通知 | |
</label> | |
</div> | |
<div className="form-actions"> | |
<button type="submit" className="action-btn"> | |
保存设置 | |
</button> | |
<button | |
type="button" | |
className="action-btn danger-btn" | |
onClick={onLogout} | |
> | |
退出登录 | |
</button> | |
</div> | |
</form> | |
</div> | |
); | |
}; | |
export default Setting; |