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 相关文章推荐
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
对Web开发中前端框架与前端类库的一些思考
Mar 27 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
Aug 04 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
AngularJS延迟加载html template
Jul 27 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
使用Node.js实现ORM的一种思路详解(图文)
Oct 24 Javascript
vue实现树形菜单效果
Mar 19 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 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
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
10 个经典PHP函数
2013/10/17 PHP
php实现httpclient类示例
2014/04/08 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
用ADODB.Stream转换
2007/01/22 Javascript
js停止输出代码
2008/07/20 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
python3.x上post发送json数据
2018/03/04 Python
详解Python_shutil模块
2019/03/15 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
教学评估实施方案
2014/03/16 职场文书
中层干部培训方案
2014/06/16 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
暑期培训心得体会
2014/09/02 职场文书
科学发展观演讲稿
2014/09/11 职场文书
介绍信范文
2015/01/31 职场文书
运动会宣传语
2015/07/13 职场文书