antd-导航菜单

水平的顶部导航:点击哪个,哪个就是选中状态,默认选中头条


<Menu  mode="horizontal" selectedKeys={[this.state.current]} onClick={this.handleClick.bind(this)}>

参数mode表示排列方式,selectedKeys的值就和<Menu.Item key="top">的key值相同时,该<Menu.Item key="top">就是选中状态,onClick事件函数的参数表示事件源,即点击哪个菜单元素,e就表示哪个菜单元素

import React from 'react';  
import { Row, Col, Menu, Icon } from 'antd';    
export default class PCHeader extends React.Component {  
    constructor() {  
        super();  
        this.state = {  
            current:"top",  
        };  
    } 
    
    handleClick(e) {
	  this.setState({current: e.key});
	}
    
    render() {  
        return (  
            <header>  
                <Row>  
                    <Col span={4}></Col>  
                    <Col span={16}>  
                        <Menu  mode="horizontal" selectedKeys={[this.state.current]} onClick={this.handleClick.bind(this)}>  
                            <Menu.Item key="top">  
                               <Icon type="appstore" />头条  
                            </Menu.Item>  
                            <Menu.Item key="shehui">  
                               <Icon type="appstore" />社会  
                            </Menu.Item>  
                            <Menu.Item key="guonei">  
                               <Icon type="appstore" />国内  
                            </Menu.Item>  
                            <Menu.Item key="guoji">  
                               <Icon type="appstore" />国际  
                            </Menu.Item>  
                            <Menu.Item key="yule">  
                               <Icon type="appstore" />娱乐  
                            </Menu.Item>  
                            <Menu.Item key="tiyu">  
                               <Icon type="appstore" />体育  
                            </Menu.Item>  
                            <Menu.Item key="keji">  
                               <Icon type="appstore" />科技  
                            </Menu.Item>  
                            <Menu.Item key="shishang">  
                               <Icon type="appstore" />时尚  
                            </Menu.Item>  
                        </Menu>  
                    </Col>  
                    <Col span={4}></Col>  
                </Row>  
            </header>  
        );  
    };  
} 

点击菜单,收起其他展开的所有菜单,官网的模板中,es6的class中,直接写属性,和箭头函数,修改成es6正常写法就可以。

import { Menu, Icon } from 'antd';
const SubMenu = Menu.SubMenu;

class Sider extends React.Component {
  // submenu keys of first level
  constructor() {  
        super();  
        this.state = {
            openKeys: ['sub1'],
        };
        
        this.rootSubmenuKeys=['sub1', 'sub2', 'sub4'];
    }
  
  onOpenChange(openKeys){
    const latestOpenKey = openKeys.find(key => this.state.openKeys.indexOf(key) === -1);
    if (this.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
      this.setState({ openKeys });
    } else {
      this.setState({
        openKeys: latestOpenKey ? [latestOpenKey] : [],
      });
    }
  }
  render() {
    return (
      <Menu
        mode="inline"
        openKeys={this.state.openKeys}
        onOpenChange={this.onOpenChange.bind(this)}
        style={{ width: 256 }}
      >
        <SubMenu key="sub1" title={<span><Icon type="mail" /><span>Navigation One</span></span>}>
          <Menu.Item key="1">Option 1</Menu.Item>
          <Menu.Item key="2">Option 2</Menu.Item>
          <Menu.Item key="3">Option 3</Menu.Item>
          <Menu.Item key="4">Option 4</Menu.Item>
        </SubMenu>
        <SubMenu key="sub2" title={<span><Icon type="appstore" /><span>Navigation Two</span></span>}>
          <Menu.Item key="5">Option 5</Menu.Item>
          <Menu.Item key="6">Option 6</Menu.Item>
          <SubMenu key="sub3" title="Submenu">
            <Menu.Item key="7">Option 7</Menu.Item>
            <Menu.Item key="8">Option 8</Menu.Item>
          </SubMenu>
        </SubMenu>
        <SubMenu key="sub4" title={<span><Icon type="setting" /><span>Navigation Three</span></span>}>
          <Menu.Item key="9">Option 9</Menu.Item>
          <Menu.Item key="10">Option 10</Menu.Item>
          <Menu.Item key="11">Option 11</Menu.Item>
          <Menu.Item key="12">Option 12</Menu.Item>
        </SubMenu>
      </Menu>
    );
  }
}

ReactDOM.render(<Sider />, document.getElementById('test1'));

### 项目概述 `vue3-antd-admin` 是一个基于 Vue3、Ant Design Vue、Vite 和 TypeScript 构建的通用后台管理框架。该项目实现了权限系统、动态菜单、表格集成等功能,设计简洁且开箱即用[^1]。 ### 使用指南 #### 安装与配置 确保安装了正确的开发环境和依赖版本。例如: ```bash vue -V @vue/cli 4.5.13 node -v v14.17.3 node-sass -v node-sass 4.14.1 (Wrapper) [JavaScript] libsass 3.5.5 (Sass Compiler) [C/C++] node-gyp -v v8.1.0 ``` 如果在安装过程中遇到问题,请检查这些版本是否匹配[^4]。 #### 动态菜单加载 `vue3-antd-admin` 支持动态菜单加载功能,这主要通过 Vue Router 的动态路由特性实现。Vue3 提供了一种简单的方式来创建单页应用程序(SPA),其中路由是非常重要的一部分。通过 Vue Router 可以动态地添加和删除路由,并提供导航菜单等有用的功能[^3]。 ### 示例与模板 #### 权限系统实现 `vue3-antd-admin` 实现了一个权限控制系统,允许开发者根据用户的权限来控制页面访问和操作权限。这种机制通常涉及前端路由守卫和组件级别的权限判断。 #### 表格集成 项目中集成了高效的表格组件,利用 Ant Design Vue 的 `a-table` 组件可以快速构建功能丰富的数据展示界面。例如: ```vue <template> <a-table :dataSource="data" /> </template> <script setup> import { ref } from 'vue'; const data = ref([ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, // 更多数据... ]); </script> ``` ### 开发工具与技术栈 - **Vue3**: 提供响应式的数据绑定和组件化的开发模式。 - **Ant Design Vue**: 集成 Ant Design 设计语言的 Vue 实现,提供丰富的 UI 组件。 - **Vite**: 新一代前端构建工具,提供更快的冷启动速度和即时的热更新。 - **TypeScript**: 增强代码的可维护性和类型安全性。 ### 相关资源 - [项目地址](https://gitcode.com/gh_mirrors/vu/vue3-antd-admin) - [Vue Antd Admin 教程](https://gitcode.com/gh_mirrors/vu/vue-antd-admin)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值