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 相关文章推荐
脚本安需导入(装载)的三种模式的对比
Jun 24 Javascript
js计算页面刷新的次数
Jul 20 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
JS设置随机出现2个数字的实例代码
Jul 19 Javascript
node后端服务保活的实现
Nov 10 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 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脚本不报错的原因
2014/06/12 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
django 模型中的计算字段实例
2020/05/19 Python
秋季运动会稿件
2014/01/30 职场文书
爱耳日活动总结
2014/04/30 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
常用的Python代码调试工具总结
2021/06/23 Python
gateway网关接口请求的校验方式
2021/07/15 Java/Android