• 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();
        }
    }
  • 相关阅读:
    SQL SERVER 2005中同义词实例
    内聚性是模块之所以成为模块的原因--一个中心、单一职责
    软件开发的方法论
    系统集成与软件开发
    编程的本质是构建---建构你想要表达的世界
    编程思想与以人为本-编程的本质
    软件开发之道-软件开发背后的哲学
    swift 协议(结合扩展)的特点
    swift的特性:扩展、协议、泛型
    从数据流角度管窥 Moya 的实现(一):构建请求
  • 原文地址:https://www.cnblogs.com/leiting/p/10282598.html
Copyright © 2020-2023  润新知