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不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
EsLint入门学习教程
Feb 17 Javascript
详解vue.js 开发环境搭建最简单攻略
Jun 12 Javascript
关于Vue Webpack2单元测试示例详解
Aug 14 Javascript
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
Oct 20 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
js实现列表按字母排序
Aug 11 Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 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实现Mysql读写分离
2013/06/28 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
微信小程序实现图片上传
2019/05/23 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
python发送邮件实例分享
2017/07/28 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
Python实现Event回调机制的方法
2019/02/13 Python
python导入pandas具体步骤方法
2019/06/23 Python
Pandas分组与排序的实现
2019/07/23 Python
对python中UDP,socket的使用详解
2019/08/22 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
联谊活动策划书
2014/01/26 职场文书
优秀食品类广告词
2014/03/19 职场文书
工作岗位说明书模板
2014/05/09 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
部队个人年终总结
2015/03/02 职场文书
教师个人自我评价
2015/03/04 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL