zoukankan      html  css  js  c++  java
  • react: navigator

    1、page js

    import React from "react";
    import {Link} from "react-router-dom";
    import LoginUser from "service/login-service/LoginUser";
    import "./index.scss";
    
    const _loginUser = new LoginUser();
    const isLogin = _loginUser.hasLogin();
    
    const navItems = [];
    const navigators = [];
    
    class Navigator extends React.Component {
    
        constructor(props) {
            super(props);
            this.state = {
                currentType: props.nav
            }
    
        }
    
        activeItemClass(item) {
            return this.state.currentType === item.type ? 'active' : '';
        }
    
        toState(item) {
            this.setState({
                currentType: item.type
            });
        }
    
        render() {
            const navigator = (
                <ul className="nav nav-tabs">
                    {navItems.map((item, index) => {
                            return (
                                <li key={'li_' + index} className={this.activeItemClass(item)}>
                                    <Link to={item.state} onClick={() => this.toState(item)}>{navigators[item.type]}</Link>
                                </li>
                            )
                        }
                    )}
                </ul>);
            return (<div className="app-navigator">{isLogin ? navigator : null}</div>)
        }
    }
    
    export default Navigator;
    import React from "react";
    import {Link} from "react-router-dom";
    import {connect} from "react-redux";
    import MenuService from "service/MenuService";
    import LoginUser from "service/login-service/LoginUser";
    import {fetchMenuData} from "reduxModel/actions/MenuAction";
    import "./index.scss";
    
    const _menuService = new MenuService();
    
    const _loginUser = new LoginUser();
    const isLogin = _loginUser.hasLogin();
    
    const mapStateToProps = state => {
        return {
            menuData: state.MenuReducer.data
        }
    };
    const mapDispatchToProps = {
        fetchMenuData: fetchMenuData,
    };
    
    class Navigator extends React.Component {
    
        constructor(props) {
            super(props);
            this.state = {
                currentType: props.nav
            }
    
        }
    
        componentDidMount() {
            this.props.fetchMenuData();
        }
    
        activeItemClass(item) {
            return this.state.currentType === item.type ? 'active' : '';
        }
    
        toState(item) {
            this.setState({
                currentType: item.type
            });
        }
    
        render() {
            const {menuData} = this.props;
            const navigator = (
                <ul className="nav nav-tabs">
                    {menuData &&
                    _menuService.getModules(menuData.menuTree).map((item, index) => {
                            return (
                                <li key={'li_' + index} className={this.activeItemClass(item)}>
                                    <Link to={item.state} onClick={() => this.toState(item)}>
                                        {menuData.navigators[item.type]}
                                    </Link>
                                </li>
                            )
                        }
                    )}
                </ul>);
            return (<div className="app-header-nav">{isLogin ? navigator : null}</div>)
        }
    }
    
    
    const NavigatorContainer = connect(
        mapStateToProps,
        mapDispatchToProps
    )(Navigator);
    
    export default NavigatorContainer;

    2、style

    .app-header-nav {
      position: relative;
      width: $body-min-width;
      margin: auto;
    
      .nav-tabs {
        position: absolute;
        right: 0;
        bottom: 1px;
        border-bottom: none;
    
        > li {
          > a {
            margin-right: 0;
            border: $border;
            border-right: none;
            border-radius: 0;
            outline: none;
            background-color: $item-active-bg-color;
            text-align: center;
    
            &:hover {
              border-color: $border-color;
              color: $title-color;
            }
          }
    
          &:last-child > a {
            border-right: $border;
          }
    
          & {
            border-top: 3px solid $bg-color;
          }
    
          &.active {
            border-top: 3px solid $primary-color;
    
            > a {
              &,
              &:hover,
              &:focus {
                border-top-color: #fff;
                border-bottom-color: #fff;
                background-color: #fff;
                color: $primary-color;
                font-weight: bold;
              }
            }
    
            + li > a {
              &,
              &:hover,
              &:focus {
                border-left: none;
              }
            }
          }
        }
      }
    }
  • 相关阅读:
    济南学习D1T5__HEAP
    快速计算C(n,r)
    快速阶乘算法
    济南学习D2T1__折纸带
    济南学习D3T1__线性筛和阶乘质因数分解
    栈与队列:栈的链式储存结构
    线性表应用:建立一个随机数 链表获得中间结点
    栈与队列应用:二进制转十进制 八进制 十六进制(栈)
    线性表:单链表基本操作代码
    线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/9332566.html
Copyright © 2011-2022 走看看