zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    webservice时间类型XMLGregorianCalendar和Date的转换
    webservice中jaxws:server 和jaxws:endpoint的区别
    使用CXF开发JAX-WS类型的WebService
    使用TCP/IP Monitor监视Soap协议
    Webservice优缺点总结
    WebService两种调用方法
    DOS命令运行java文件,批量引用jar包
    eclipse创建的maven项目无法部署到tomcat
    图片翻转效果
    掷骰子效果
  • 原文地址:https://www.cnblogs.com/leiting/p/10282598.html
Copyright © 2011-2022 走看看