ant design vue导航菜单与路由配置操作


Posted in Javascript onOctober 28, 2020

此功能包含:

1.根据动态路由自动展开与自动选择对应路由所在页面菜单

2.只展开一个子菜单

3.兄弟组件控制菜单与路由

<a-menu
:openKeys="openKeys"
:selectedKeys="selectedKeys"
mode="inline"
theme="dark"
:inlineCollapsed="$store.state.isCollapse"
@click='select'
@openChange='openChange'
>
<a-sub-menu v-for="item in menu" :key="item.name" :index="item.title">
<span slot="title"
><a-icon :type="item.icon" /><span>{{ item.title }}</span></span
>
<a-menu-item
v-for="subItem in item.submenu"
:key="subItem.index"
:index="subItem.index"
>
<router-link :to="subItem.path">
{{ subItem.text }}
</router-link>
</a-menu-item>
</a-sub-menu>
</a-menu>

菜单栏路由配置:

{
     title: 'Dashboard',
     name: '/dashboard',
     icon: 'dashboard',
     submenu: [
      { text: '分析页', path: '/dashboard/analysis', index: '/analysis' },
      { text: '监控页', path: '/dashboard/monitor', index: '/monitor' }
     ]
    }

默认开启的子菜单及选中项配置

openKeys: [this.$route.path.substr(0, this.$route.path.lastIndexOf('/'))],
selectedKeys: [this.$route.path.substr(this.$route.path.lastIndexOf('/'))],
rootSubmenuKeys: ['/dashboard', '/form', '/table', '/user'], // 有几个子菜单项就贴几个

功能代码:

methods: {
  openChange (openKeys) { // 只展开一个子菜单
   const latestOpenKey = openKeys.find(key => this.openKeys.indexOf(key) === -1)
   if (this.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {
    this.openKeys = openKeys
   } else {
    this.openKeys = latestOpenKey ? [latestOpenKey] : []
   }
  },
  select ({ item, key, selectedKeys }) { // 选中项
   this.selectedKeys = [key]
  }
 },
 created () {
  this.$bus.$on('goperson', (url) => { // 组件间通信设置菜单栏状态 此处功能可查看另一篇博客
   this.openKeys = [ url.substr(0, url.lastIndexOf('/')) ]
   this.selectedKeys = [ url.substr(url.lastIndexOf('/')) ]
  })
 }

补充知识:Ant Design Pro 侧边菜单栏 + 路由Router

1、 首先找到 menu.js

ant design vue导航菜单与路由配置操作

{
    name: '新添加的表单',
    path: 'new-basic-form',
},

添加从30行-33行代码,然后在你的侧边栏就是多出来一个 “新添加的表单”

ant design vue导航菜单与路由配置操作

但是当你点击的时候,你会发现右边 Main 是404,因为我们还需要配置一下router (代表当我点击“新添加的表单”这个彩蛋的时候,右边需要显示的页面是什么)

2、点击router.JS 在表单页下面 children 添加30行-44行

ant design vue导航菜单与路由配置操作

'/form/new-basic-form': {
   component: dynamicWrapper(app, ['form'], () => import('../routes/Forms/newBasicForm')),
 },

ant design vue导航菜单与路由配置操作

因为链接的是newBasicForm 就需要创建一个newBasicForm.JS

在routes——》Forms——》下创建newBasicForm.js

newBasicForm.js里面的代码为:
import React, { PureComponent } from 'react';
import { connect } from 'dva';
import {
 Form,
 Input,
 DatePicker,
 Select,
 Button,
 Card,
 InputNumber,
 Radio,
 Icon,
 Checkbox,
 Tooltip,
} from 'antd';
import PageHeaderLayout from '../../layouts/PageHeaderLayout';
import styles from './style.less';
const FormItem = Form.Item; 

@Form.create()
export default class newBasicForms extends PureComponent {
 handleSubmit = e => {
  e.preventDefault();
  this.props.form.validateFieldsAndScroll((err, values) => {
   if (!err) {
    this.props.dispatch({
     type: 'form/submitRegularForm',
     payload: values,
    });
   }
  });
 };

 render() {
  const { getFieldDecorator, getFieldValue } = this.props.form;

  const formItemLayout = {
   labelCol: {
    xs: { span: 24 },
    sm: { span: 7 },
   },
   wrapperCol: {
    xs: { span: 24 },
    sm: { span: 12 },
    md: { span: 10 },
   },
  };

   return (
    //  这个个组件 自带头
    <PageHeaderLayout
    title="new-基础表单"
    content="表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。"
    >
    <Card bordered={false}>
      <p>你好我叫刘国富</p>
      <Form onSubmit={this.handleSubmit} hideRequiredMark style={{ marginTop: 8 }}>
      <FormItem {...formItemLayout} label="标题">
       {getFieldDecorator('title', {
        rules: [
         {
          required: true,
          message: '请输入标题',
         },
        ],
       })(<Input placeholder="给目标起个名字" />)}
      </FormItem>
      </Form>
    </Card>
    </PageHeaderLayout>

   );
  }
 }

当点击新添加的表单,右边则显示为:你好我叫刘国富。

ant design vue导航菜单与路由配置操作

以上这篇ant design vue导航菜单与路由配置操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
Sep 08 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
基于vue2.0动态组件及render详解
Mar 17 Javascript
d3.js实现自定义多y轴折线图的示例代码
May 30 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 Javascript
微信小程序使用 vant Dialog组件的正确方式
Feb 21 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 Javascript
JS实现多功能计算器
Oct 28 #Javascript
JS实现简单贪吃蛇小游戏
Oct 28 #Javascript
VUE和Antv G6实现在线拓扑图编辑操作
Oct 28 #Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 #Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 #Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 #Javascript
js 实现碰撞检测的示例
Oct 28 #Javascript
You might like
discuz7 phpMysql操作类
2009/06/21 PHP
基于pear auth实现登录验证
2010/02/26 PHP
php生成excel文件的简单方法
2014/02/08 PHP
php关联数组快速排序的方法
2015/04/17 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
koa+mongoose实现简单增删改查接口的示例代码
2019/05/13 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
python数据预处理方式 :数据降维
2020/02/24 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
挑战杯创业计划书的写作指南
2014/01/07 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
2014年派出所工作总结
2014/11/21 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android