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

相关文章

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建