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 相关文章推荐
兼容ie、firefox的图片自动缩放的css跟js代码分享
Jan 21 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
Javascript对象Clone实例分析
Jun 09 Javascript
JavaScript基于对象去除数组重复项的方法
Oct 09 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
Jul 09 Javascript
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
vue 不使用select实现下拉框功能(推荐)
May 17 Javascript
JavaScript单线程和任务队列原理解析
Feb 04 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
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
React全家桶环境搭建过程详解
2018/05/18 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python语言的12个基础知识点小结
2014/07/10 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
用Python编写简单的微博爬虫
2016/03/04 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
tensorflow识别自己手写数字
2018/03/14 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
PyQt5实现简易电子词典
2019/06/25 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
小学网上祭英烈活动总结
2014/07/05 职场文书
大学毕业生自我评价
2015/03/02 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python