|
@@ -1,6 +1,10 @@
|
|
|
import React from 'react';
|
|
|
import { Avatar, Typography, List, Space } from 'antd';
|
|
|
import { UserOutlined, RightOutlined } from '@ant-design/icons';
|
|
|
+import { useSelector } from 'react-redux';
|
|
|
+
|
|
|
+import { RootState } from '@/states/store';
|
|
|
+import { isLoggedIn } from '../../states/user_info';
|
|
|
|
|
|
const { Text } = Typography;
|
|
|
|
|
@@ -15,8 +19,10 @@ const settings = [
|
|
|
];
|
|
|
|
|
|
const Profile: React.FC = () => {
|
|
|
- // 假设用户名和头像
|
|
|
- const username = '用户名';
|
|
|
+ // 监听登录状态,获取用户名和头像
|
|
|
+ const login = useSelector((state: RootState) => isLoggedIn(state.userInfo));
|
|
|
+ const username = useSelector((state: RootState) => state.userInfo.name);
|
|
|
+ const avatarUrl = useSelector((state: RootState) => state.userInfo.avatar);
|
|
|
|
|
|
const handleItemClick = (item: (typeof settings)[0]) => {
|
|
|
// TODO: 跳转到对应设置页面
|
|
@@ -28,9 +34,13 @@ const Profile: React.FC = () => {
|
|
|
return (
|
|
|
<div style={{ maxWidth: 400, margin: '0 auto', padding: 24 }}>
|
|
|
<Space align="center" style={{ marginBottom: 32 }}>
|
|
|
- <Avatar size={64} icon={<UserOutlined />} />
|
|
|
+ <Avatar
|
|
|
+ size={64}
|
|
|
+ icon={<UserOutlined />}
|
|
|
+ src={login && avatarUrl ? avatarUrl : undefined}
|
|
|
+ />
|
|
|
<Text strong style={{ fontSize: 20, marginLeft: 16 }}>
|
|
|
- {username}
|
|
|
+ {login ? username : '未登录'}
|
|
|
</Text>
|
|
|
</Space>
|
|
|
<List
|