AntDesign(React)学习-6 Menu展示数据
1、官方文档请查看
https://ant.design/components/menu-cn/
antPro自带的菜单功能很强大,但是太复杂了,感觉大部分功能都用不上,下面实现一个简单从后台动态获取菜单的功能。
2、增加SubMenu方法
2.1 定义
3、将LeftMenu单独抽离成一个组件
新建在Src下新建 components/LeftMenuTree目录,然后新建LeftMenuTree.tsx,内容如下
import {Menu, Icon } from 'antd';
import React from 'react';
const { SubMenu } = Menu;
class LeftMenuTree extends React.Component{
render() {
return (
<Menu theme="dark" mode="inline" defaultSelectedKeys={['']}>
<Menu.Item key="">
<Icon type="user" />
<span>nav </span>
</Menu.Item>
<Menu.Item key="">
<Icon type="video-camera" />
<span>nav </span>
</Menu.Item>
<Menu.Item key="">
<Icon type="upload" />
<span>nav </span>
</Menu.Item>
<SubMenu key="sub3" title="Submenu">
<Menu.Item key="">Option </Menu.Item>
<Menu.Item key="">Option </Menu.Item>
</SubMenu>
</Menu>
);
}
export default LeftMenuTree;
直接将BasicLayout代码修改为
运行效果

4、下面将treemenu改为动态显示,mock目录下增加一个文件名称menu.ts,内容如下
export default {
'/api/getmenu': [
{
id: 0,
title: '首页',
url:'home',
children: [],
},
{
id: 1,
title: '权限配置',
parentid: 0,
children: [
{
id: 2,
title: '用户管理',
parentid: 1,
children: [],
},
{
id: 3,
title: '角色管理',
parentid: 1,
children: [],
},
],
}
]
};
5、访问测试
http://localhost:8000/api/getmenu

6、下面将修改LeftMenuTree组件动态显示menu.网上找不到可以直接运行demo片段代码,自己了研究了一下午,实现了无限级显示menu,代码如下,从mock读数据大家自己完善
import { Menu, Icon } from 'antd';
import React from 'react';
import Item from 'antd/lib/list/Item';
const { SubMenu } = Menu;
class LeftMenuTree extends React.Component {
state={list:[{"id":0,"title":"首页","url":"home","children":[]},{"id":1,"title":"权限配置","parentid":0,"children":[{"id":2,"title":"用户管理","parentid":1,"children":[]},{"id":3,"title":"角色管理","parentid":1,"children":[]}]}]};
constructor(props) {
super(props);
}
render() {
console.log(this.state.list)
return (
<Menu theme="dark" mode="inline" defaultSelectedKeys={['1']}>
{
this.showMenus(this.state.list)
}
</Menu>
);
}
//显示菜单列表
private showMenus(list): React.ReactNode {
return list.map((item, index) => (
this.showMenu(item)
));
}
//显示菜单项
private showMenu(item: any) {
if(item.children.length==0)
return <Menu.Item key={item.id}>
<Icon type="file" />
<span>{item.title}{item.id}</span>
</Menu.Item>;
else
return <SubMenu key={item.id} title={
<span>
<Icon type="folder" />
<span>{item.title}</span>
</span>
}>
{this.showMenus(item.children)}
</SubMenu>
}
}
export default LeftMenuTree;
7、运行效果如下,大家可以自己增加点击跳转url和get数据方法,后面将更深入的了解这个组件。

AntDesign(React)学习-6 Menu展示数据的更多相关文章
- AntDesign(React)学习-7 Menu添加事件
今天花了大半天时间从老家回到工作地,路上因为肺炎封堵挺厉害,希望国家挺过这个难关,要不大家都失业可就惨了,上一篇做了一个展示数据的demo,这一篇研究antd Menu item点击事件 1.还是先看 ...
- AntDesign(React)学习-8 Menu使用 切换框架页内容页面
本节实现一个点击左侧menu在右侧content切换页面效果,原始代码请从UMI学习-6开始看 1.在pages下添加两个组件,User,UserRole import React from 'rea ...
- AntDesign(React)学习-1 创建环境
目录: AntDesign(React)学习-15 组件定义.connect.interface AntDesign(React)学习-14 使用UMI提供的antd模板 AntDesign(Reac ...
- AntDesign(React)学习-2 第一个页面
1.前面创建了第一个项目jgdemo,结构如下,使用TypeScript. 2.yarn start启动项目 3.点击GettingStarted是umi的官方网站 https://umijs.org ...
- salesforce lightning零基础学习(七) 列表展示数据时两种自定义编辑页面
上一篇Lightning内容描述的是LDS,通过LDS可以很方便的实例化一个对象的数据信息.当我们通过列表展示数据需要编辑时,我们常使用两种方式去处理编辑页面:Pop Up Window弹出修改详情以 ...
- AntDesign(React)学习-4 登录页面提交数据简单实现
github代码:https://github.com/zhaogaojian/jgdemo 全国肺炎,过节期间没地方去在家学习antd. 一.感觉antd pro项目太庞大了,可以学习下结构和代码风 ...
- AntDesign(React)学习-10 Dva 与后台数据交互
明天正式在线办公没时间学习了,今天晚上再更新一篇, 代码提交一次:https://github.com/zhaogaojian/jgdemo 1.src下创建services目录 创建文件userSr ...
- AntDesign(React)学习-5 路由及使用Layout布局
前言:学习目标实现点击登录按钮,直接进入后台布局页面,类似下面antd官网文档展示效果 ant.design访问 https://ant-design.gitee.io/components/menu ...
- AntDesign(React)学习-12 使用Table
AntDesign(Vue)版的Table中使用图片https://www.cnblogs.com/zhaogaojian/p/11119762.html 之前在使用VUE版Table时,使用大图片时 ...
随机推荐
- 知名KMS模拟器的官方发布网址
些知名KMS模拟器的官方发布网址: 本机自激活安装类KMS激活软件,容易在系统升级中被查杀失效,且在软件传播过程中极易被捆绑植入后门.病毒,不推荐尝试. Windows Loaderhttps://f ...
- #《H.264和MPEG-4视频压缩》# 二. 图像质量
为了规范.评价.比较不同的视频通信系统,我们需要建立评价图像质量的准则.视觉效果的测量非常困难,而且并不精确,因为影响结果的因素众多.图像质量的认定是一个主观化的东西,许多影响它的因素都难以给出完整而 ...
- Node中使用MongoDB
简介 MongoDB 中文文档 MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. Mongoose 在Node中可以使用 Mo ...
- [APIO2018] New Home 新家 [线段树,multiset]
线段树的每个点表示当前点的前驱,即这个颜色上一次出现的位置,这个玩意multiset随便写写就完了. 重要的是怎么查询答案,无解显然先判掉. 线段树上二分就可以了 #include <bits/ ...
- 【48】数据扩充(Data augmentation)
数据扩充(Data augmentation) 大部分的计算机视觉任务使用很多的数据,所以数据扩充是经常使用的一种技巧来提高计算机视觉系统的表现.我认为计算机视觉是一个相当复杂的工作,你需要输入图像的 ...
- MQ日常命令
假设队列管理器为QMgrName,以下所有使用QMgrName的地方您都可以替换成您维护的mq队列管理器名称. 一.MQ的启动与停止 用root用户启/停需要root用户包含在mqm组中. 1.MQ的 ...
- vue-infinite-loading 过滤器tab正确使用
业务逻辑涉及loadmore,filter和tab切换,框架是vue,使用vue-infinite-loading中的一点经历. identifier 一开始并没有重视这个参数,只是他的官网说iden ...
- C# WPF Bing地图展示
微信公众号:Dotnet9,网站:Dotnet9,问题或建议,请网站留言: 如果您觉得Dotnet9对您有帮助,欢迎赞赏 内容目录 实现效果 业务场景 编码实现 本文参考 源码下载 1.实现效果 Bi ...
- nginx模块之ngx_http_fastcgi_module
nginx支持LNMP 安装php-fpm yum install php-fpm -y 使用/etc/php-fpm.d/www.conf配置文件默认配置即可 打开php配置: vim /etc/n ...
- mybatis第二天02
MyBatis第二天内容 1.mybatis的执行原理 通过: 1.全局配置文件SqlMapConfig.xml 映射文件mapper.xml 获取得到SqlSessinFactory工厂 2.由工 ...