react 侧栏二级菜单组件
侧边栏菜单组件
component 下新建menu文件,menu下建index.jsx和subitem.jsx
index.jsx
import React, { Component } from 'react';
import {NavLink} from 'react-router-dom'
import SubItem from './subitem' export default class Menu extends React.Component {
constructor(props,context){
super(props,context)
this.state = {
menus:[
{name:'首页',icon:'icon-shouye',show:true,link:'/'},
{name:'公告管理',icon:'icon-gonggao',show:true,link:'/noticelist'},
{name:'人事管理',icon:'icon-yonghu2',show:true,link:'',
submenu:[
{name:'员工档案',link:'/hrmanage/employeefiles',show:true},
{name:'请假申请',link:'/hrmanage/leave',show:true},
]},
{name:'组织架构',icon:'icon-zuzhi1',show:true,link:'/organization'},
{name:'系统管理',icon:'icon-xitong2',show:true,link:'',
submenu:[
{name:'权限设置',link:'/systemset/authorize',show:true},
]
},
]
}
} render() {
let self = this;
return (
<div className="Menu">
<ul>
{
self.state.menus.map(function(item,index){
return <li key={index}
onClick={self.linktosonpage.bind(self,item,index)}>
{/*如果有二级菜单就显示右边的icon*/}
<i className={`iconfont ${item.icon}`}></i>{item.name}<i className={`youjiantou ${item.submenu?'iconfont icon-youjiantou':''} ${item.show?'rotate':''}`}></i>
{item.submenu
?<SubItem isshow={item.show} items={item.submenu} />:''
}
</li>
})
}
</ul>
</div>
)
} linktosonpage(item,index){
if(item.link){ // item.link是子菜单的路由地址
location.replace(`#${item.link}`);
// this.props.history.push(item.link) // 用这个报错Cannot read property 'push' of undefined
}else{
let that = this;
let data = that.state.menus;
data[index].show = !data[index].show
that.setState({
menus:data
})
}
} }
subitem.jsx
import React, { Component } from 'react';
import { Link } from 'react-router-dom' export default class SubItem extends React.Component { render(){
let self = this;
return(
<div className="SubItem" className={this.props.isshow?'':'hide'}>
{
this.props.items.map(function(i,subindex){
return <div className="item" key={subindex} onClick={self.stoppropgation.bind(self)}>
<Link to={i.link}>{i.name}</Link>
</div>
})
}
</div>
)
} stoppropgation(e){
e.stopPropagation();
}
}
react 侧栏二级菜单组件的更多相关文章
- dedecms织梦导航栏二级菜单的实现方法
dede导航下拉菜单,一级栏目增加二级下拉菜单 使用dedecms5.6——5.7 将这段代码贴到templets\default\head.htm文件里<!-- //二级子类下拉菜单,考虑 ...
- element ui aside — 侧栏导航菜单移入移出折叠效果
效果如图,移入移出控制折叠,点击按钮后移入移出不可控制折叠. 功能是很简单的功能,不过昨天这块还是弄了小一个小时,所以记录下来. 发现的问题: 模版上el-aside写上@mouseenter无效 解 ...
- 多种css3时尚侧栏菜单展开显示效果Off-Canvas Menu Effects
今天我们想分享多种css3时尚侧栏菜单展开显示效果.侧边栏应用广泛,我们之前已经产生了一些效果灵感.风格演变,今天我们要展示一套新的灵感的现代效果.不同的布局和菜单的同步转换和页面可以让一切看起来更有 ...
- ionic 侧栏菜单用法
第一步: 引入js和css文件我这里是直接引入的cdn,ionic是基于angular的,bundle.min.js把常用angular的js已经压缩到一起,可以直接引入.bundle.min.js, ...
- Ionic Js十七:侧栏菜单
一个容器元素包含侧边菜单和主要内容.通过把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换. 效果图如下所示:   用法 要使用侧栏菜单,添加一个父元素,一个中间内容 ,和一个或更 ...
- HTML+CSS实现导航栏二级下拉菜单完整代码
工具是vs code 代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- ionic js 侧栏菜单 把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换
ionic 侧栏菜单 一个容器元素包含侧边菜单和主要内容.通过把主要内容区域从一边拖动到另一边,来让左侧或右侧的侧栏菜单进行切换. 效果图如下所示: 用法 要使用侧栏菜单,添加一个父元素<ion ...
- django自定义rbac权限组件(二级菜单)
一.目录结构 二.表结构设计 model.py from django.db import models # Create your models here. class Menu(models.Mo ...
- 手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示
手摸手,带你用vue实现后台管理权限系统及顶栏三级菜单显示 效果演示地址 项目demo展示 重要功能总结 权限功能的实现 权限路由思路: 根据用户登录的roles信息与路由中配置的roles信息进行比 ...
随机推荐
- 【转】JS函数集合大全
1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...
- C/C++预处理指令
预处理指令 Preprocessor Directives define undef ifdef ifndef if endif else and elif line error include 预定 ...
- get提交
<?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { //显示用户 public function index(){ $Use ...
- 关于Cocos2d-x中精灵节点的透明度的设置
1.当我们需要某个精灵作为一个大一点的容器来存放其他的小精灵的时候,我们先设置这个精灵的大小 setTextureRect(Rect(0, 0, babySize.width, babySize.he ...
- 获取platformVersion、deviceName、appPackage
命令获取如下: 手机与电脑连接 devicename: adb devices platformversion : adb shell getprop ro.build.version.re ...
- 【转】【OPenGL】opengl 64位 配置 freeglutx64下载
1.GLEW The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension ...
- Spring 4 官方文档学习(十一)Web MVC 框架之themes
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-themeresolver ...
- FusionMap 检测融合基因
定义:融合基因是指两个或者多个基因联合起来,一起转录形成一个转录本: 检测的意义:融合基因可以作为某些疾病的特异分子标记,比如 bcr/abl融合基因存在于95%以上的慢性粒细胞白血病患者中: AML ...
- Kubernetes1.1源码分析(二)
3.controller-manager模块 在controller manager模块中有几个重要的结构体.当中包含EndpointController.ReplicationManager.GCC ...
- JQuery 选择器 xpath 语法应用
比如下面html代码 <ul> <li class="aaaa" title="ttt">li-1</li> <li ...