91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

龙南县| 忻城县| 涞水县| 巧家县| 宝鸡市| 新乡县| 柳林县| 合肥市| 固安县| 丰都县| 绥化市| 福贡县| 温州市| 勐海县| 枞阳县| 济源市| 北流市| 体育| 建阳市| 策勒县| 从化市| 噶尔县| 静海县| 太仆寺旗| 哈尔滨市| 永城市| 寻乌县| 宿州市| 松阳县| 页游| 江达县| 双峰县| 兴城市| 隆尧县| 彭州市| 绥棱县| 聂拉木县| 奉新县| 永年县| 汕头市| 长武县|