亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react實現菜單權限控制的方法

發布時間:2020-10-07 20:21:24 來源:腳本之家 閱讀:385 作者:追尋 欄目:web開發

通常公司的后臺管理系統都需要權限控制,即不同的角色用戶看到不同的菜單,如下圖:

react實現菜單權限控制的方法

下面,通過react實現這樣的后臺管理系統(腳手架),功能簡介:

1.頂部的菜單項根據用戶的角色動態生成。

2.側邊測菜單項根據已選的頂部菜單動態生成。

直接上代碼:

路由配置:

export default (
  <Route path="/" component={App}>
    <IndexRoute component={EmployeeList}/>
    <Route path="/employee" component={Employee}>
      <IndexRoute component={EmployeeList}/>
      <Route path="/employee/list" component={EmployeeList}/>
      <Route path="/employee/detail/:id" component={EmployeeDetail}/>
    </Route>
    <Route path="/goods" component={Goods}>
      <IndexRoute component={GoodsList}/>
      <Route path="/goods/list" component={GoodsList}/>
      <Route path="/goods/detail/:id" component={GoodsDetail}/>
    </Route>
  </Route>
)

頂部菜單項單獨成了一個組件:

// 動態數據
import React, { Component } from 'react'
import { Link } from 'react-router' // 引入Link處理導航跳轉
import { connect } from 'react-redux'
import { fetchPostsIfNeeded, updateSubMenuWhenClick } from '../actions/count'
import { Menu } from 'antd';
class TopMenu extends Component {
  constructor(props){
    super(props);
    this.handleMenuClick = this.handleMenuClick.bind(this);
  }

  handleMenuClick(e){
    // console.log(e.item.props['data-menukey']);
    const { updateSubMenuWhenClick } = this.props
    updateSubMenuWhenClick(true, e.item.props['data-menukey'])
  }
  componentWillMount() {
  }
  componentDidMount() {
    const { fetchPostsIfNeeded } = this.props
    fetchPostsIfNeeded()
  }
  render() {
    const { menuList, fetchPostsIfNeeded } = this.props
    if(menuList.length != 0) {
      fetchPostsIfNeeded(true, menuList[0].key)
    }

    return (
      <Menu
        theme="dark"
        mode="horizontal"
        defaultSelectedKeys={['0']}
        style={{ lineHeight: '64px' }}
        onClick={this.handleMenuClick}
      >
      {
        menuList.map((e, index) => 
          <Menu.Item key={index} data-menukey={e.key} >
            <Link to={{ pathname: e.url }} >{e.name}</Link>
          </Menu.Item>
        )
      }
      </Menu>
    )
  }
}

const getList = state => {
  return {
    menuList: state.update.menuList
  }
}

export default connect(
  getList, 
  { fetchPostsIfNeeded, updateSubMenuWhenClick }
)(TopMenu)

在render函數中,如果動態生成的頂部菜單數據長度不為0,則根據頂部菜單的key動態生成側邊菜單項。

const { menuList, fetchPostsIfNeeded } = this.props
    if(menuList.length != 0) {
      fetchPostsIfNeeded(true, menuList[0].key)
    }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

关岭| 东乌珠穆沁旗| 通海县| 二手房| 德化县| 宜阳县| 修水县| 绩溪县| 清徐县| 平果县| 清水河县| 昌平区| 海丰县| 商都县| 莒南县| 疏附县| 江都市| 昂仁县| 游戏| 枣强县| 黑山县| 蒙阴县| 林口县| 荔浦县| 凤凰县| 全南县| 温州市| 双鸭山市| 扎鲁特旗| 翁牛特旗| 铁岭市| 大荔县| 昭平县| 泰宁县| 阿坝| 筠连县| 永定县| 神池县| 瓮安县| 绥芬河市| 砚山县|