【图文并茂】ant design pro 如何优雅奇妙地调用个人头像和用户名

本文主要是介绍【图文并茂】ant design pro 如何优雅奇妙地调用个人头像和用户名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
如上图所示,如果拿到远程的头像和用户名信息呢。

首先肯定是要登录,然后去访问个人信息接口。

我们之前有提到 * 【图文并茂】ant design pro 如何对接后端个人信息接口

这个是基础

接下来我们只要去调到想要的信息就好。

在这里插入图片描述
首先是有头像信息的,也有用户名。

用户名

在这里插入图片描述
src/components/RightContent/AvatarDropdown.tsx

import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons';
import { FormattedMessage, history, useModel } from '@umijs/max';
import { Spin } from 'antd';
import { createStyles } from 'antd-style';
import { stringify } from 'querystring';
import React, { useCallback } from 'react';
import { flushSync } from 'react-dom';
import HeaderDropdown from '../HeaderDropdown';export type GlobalHeaderRightProps = {menu?: boolean;children?: React.ReactNode;
};export const AvatarName = () => {const { initialState } = useModel('@@initialState');const { currentUser } = initialState || {};return <span className="anticon">{currentUser?.name}</span>;
};const useStyles = createStyles(({ token }) => {return {action: {display: 'flex',height: '48px',marginLeft: 'auto',overflow: 'hidden',alignItems: 'center',padding: '0 8px',cursor: 'pointer',borderRadius: token.borderRadius,'&:hover': {backgroundColor: token.colorBgTextHover,},},};
});export const AvatarDropdown: React.FC<GlobalHeaderRightProps> = ({ menu, children }) => {/*** 退出登录,并且将当前的 url 保存*/const loginOut = async () => {localStorage.removeItem('token');const { search, pathname } = window.location;const urlParams = new URL(window.location.href).searchParams;/** 此方法会跳转到 redirect 参数所在的位置 */const redirect = urlParams.get('redirect');// Note: There may be security issues, please noteif (window.location.pathname !== '/user/login' && !redirect) {history.replace({pathname: '/user/login',search: stringify({redirect: pathname + search,}),});}};const { styles } = useStyles();const { initialState, setInitialState } = useModel('@@initialState');const onMenuClick = useCallback((event: { key: React.Key }) => {const { key } = event;if (key === 'logout') {flushSync(() => {setInitialState((s) => ({ ...s, currentUser: undefined }));});loginOut().catch(() => console.error);return;}history.push(`/account/${key}`);},[initialState, setInitialState],);const loading = (<span className={styles.action}><Spinsize="small"style={{marginLeft: 8,marginRight: 8,}}/></span>);if (!initialState) {return loading;}const { currentUser } = initialState;if (!currentUser || !currentUser.email) {return loading;}const menuItems = [...(menu? [{key: 'center',icon: <UserOutlined />,label: '个人中心',},{key: 'settings',icon: <SettingOutlined />,label: '个人设置',},{type: 'divider' as const,},]: []),{key: 'change-password',icon: <SettingOutlined />,label: <FormattedMessage id="menu.account.change-password" defaultMessage="修改密码" />,},{key: 'logout',icon: <LogoutOutlined />,label: <FormattedMessage id="menu.account.logout" defaultMessage="退出登录" />,},];return (<HeaderDropdownmenu={{selectedKeys: [],onClick: onMenuClick,items: menuItems,}}>{children}</HeaderDropdown>);
};

在这里插入图片描述
这些判断也蛮重要的,要跟后端的数据对应上。

头像

在这里插入图片描述
头像信息是在这个 src/app.tsx 文件处理的。

    avatarProps: {src: initialState?.currentUser?.avatar,title: <AvatarName />,render: (_, avatarChildren) => {return <AvatarDropdown>{avatarChildren}</AvatarDropdown>;},},

类型

最后是类型信息要跟后端的对上

src/services/ant-design-pro/typings.d.ts

 type CurrentUser = {isAdmin: CurrentUser | undefined;data?: any;name?: string;avatar?: string;role?: string;roles?: any;_id?: string;userid?: string;email?: string;signature?: string;title?: string;group?: string;tags?: { key?: string; label?: string }[];notifyCount?: number;unreadCount?: number;country?: string;access?: string;geographic?: {province?: { label?: string; key?: string };city?: { label?: string; key?: string };};address?: string;phone?: string;};

完结


  • 获取 ant design pro & nodejs & typescript 多角色权限动态菜单管理系统源码*
  • 我正在做的程序员赚钱副业 - Shopify 真实案例技术赚钱营销课视频教程

这篇关于【图文并茂】ant design pro 如何优雅奇妙地调用个人头像和用户名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099381

相关文章

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.