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 相关文章推荐
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
JavaScript操作选择对象的简单实例
May 16 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
详解Node 定时器
Feb 26 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
在 Vue 中编写 SVG 图标组件的方法
Feb 24 Javascript
Javascript如何实现双指控制图片功能
Feb 25 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 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函数之日期时间函数date()使用详解
2013/09/09 PHP
php随机显示图片的简单示例
2014/02/15 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
js中开关变量使用实例
2017/02/24 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
探索webpack模块及webpack3新特性
2017/09/18 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
django rest framework serializers序列化实例
2020/05/13 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
python的launcher用法知识点总结
2020/08/07 Python
python中常用的数据结构介绍
2021/01/12 Python
自我鉴定模板
2013/10/29 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
期末个人总结范文
2015/02/13 职场文书
Go语言测试库testify使用学习
2022/07/23 Golang
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript