【图文并茂】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

相关文章

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.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场