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使用ajax读博客rss示例
May 06 Javascript
24款热门实用的jQuery插件推荐
Dec 24 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
Apr 10 Javascript
ReactNative列表ListView的用法
Aug 02 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
微信小程序slider组件使用详解
Jan 31 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
jQuery HTML css()方法与css类实例详解
May 20 jQuery
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
isset和empty的区别
2007/01/15 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
vue实现分页栏效果
2019/06/28 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python中datetime模块参考手册
2017/01/13 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python如何将两个txt文件内容合并
2019/10/18 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
员工拾金不昧表扬信
2014/01/09 职场文书
聘用意向书
2014/07/29 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
导师对论文的学术评语
2015/01/04 职场文书
新生儿未入户证明
2015/06/23 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js