AvatarDropdown.jsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'
  2. import { Avatar, Menu, Spin } from 'antd'
  3. import React from 'react'
  4. import { history, connect } from 'umi'
  5. import HeaderDropdown from '../HeaderDropdown'
  6. import styles from './index.less'
  7. class AvatarDropdown extends React.Component {
  8. onMenuClick = event => {
  9. const { key } = event
  10. if (key === 'logout') {
  11. const { dispatch } = this.props
  12. if (dispatch) {
  13. dispatch({
  14. type: 'login/logout'
  15. })
  16. }
  17. return
  18. }
  19. history.push(`/account/${key}`)
  20. }
  21. render() {
  22. const {
  23. currentUser = {
  24. avatar: '',
  25. name: ''
  26. },
  27. menu
  28. } = this.props
  29. const menuHeaderDropdown = (
  30. <Menu className={styles.menu} selectedKeys={[]} onClick={this.onMenuClick}>
  31. {menu && (
  32. <Menu.Item key="center">
  33. <UserOutlined />
  34. 个人中心
  35. </Menu.Item>
  36. )}
  37. {menu && (
  38. <Menu.Item key="settings">
  39. <SettingOutlined />
  40. 个人设置
  41. </Menu.Item>
  42. )}
  43. {menu && <Menu.Divider />}
  44. <Menu.Item key="logout">
  45. <LogoutOutlined />
  46. 退出登录
  47. </Menu.Item>
  48. </Menu>
  49. )
  50. return currentUser && currentUser.username ? (
  51. <HeaderDropdown overlay={menuHeaderDropdown}>
  52. <span className={`${styles.action} ${styles.account}`}>
  53. <Avatar
  54. size="small"
  55. className={styles.avatar}
  56. src="https://d4.smartcost.com.cn/1.jpg"
  57. // src={'https://d4.smartcost.com.cn/1.jpg'}
  58. alt="avatar"
  59. />
  60. {/* src={currentUser.avatar} */}
  61. <span className={`${styles.name} anticon`}>{currentUser.username}</span>
  62. </span>
  63. </HeaderDropdown>
  64. ) : (
  65. <span className={`${styles.action} ${styles.account}`}>
  66. <Spin
  67. size="small"
  68. style={{
  69. marginLeft: 8,
  70. marginRight: 8
  71. }}
  72. />
  73. </span>
  74. )
  75. }
  76. }
  77. export default connect(({ user }) => ({
  78. currentUser: user.currentUser
  79. }))(AvatarDropdown)