Vue-router导航问题
现在的项目,用的是Vue,但当时用的时候,是边学边做的,上手确实比较简单,但是已经用Vue写了一个项目了,但是感觉对Vue的还是不是很深刻,用的都是比较简单的API,
现在回头看看,有些东西,非常的精巧和实用,现在回顾一下:
1.index
<ul @click='godetail'>
<li v-for="(item,index) in list">{{ index }}.{{ item.content }}</li>
</ul>
循环显示内容的时候,当需要显示index值的时候,index需要再item后面,如果index在item前面会显示item对象
2.params() 动态路由匹配
我们经常需要把某种模式匹配到的所有路由,全部映射到同个组件,例如我们有一个second组件,对于所有ID各不相同的用户,都要使用这个组件来渲染。
router.js配置
{
path: '/second/:id',
name: 'second',
component: second
}
vue页面
<p>
<router-link to="/second/foo">foo</router-link>
<router-link to="/second/bar">bar</router-link>
</p>
second {{ $route.params.id }}
<router-view></router-view>
在页面上显示的内容
/second/foo
和 /second/bar
都将映射到相同的路由second上,不用写新的vue组件。
3.命名式导航
在官网上介绍了一种命名路由,因为我一直是使用直接push()路径的,最近也在研究它俩的区别,
<router-link :to="{path:'/content/three',query:{openid:this.openid}}" >
用下来,个人还是比较喜欢直接push()路径的
例
一级路由里面有first和second路由
<router-link :to="{ name: 'first', params: {name:1} }">first</router-link>
<router-link :to="{ name: 'second', params: {name:2} }">second</router-link>
<router-view/>
然后first路由里面又有detail和test路由
<router-link :to="{ name: 'detail', params:{name:1}}">detail</router-link>
<router-link :to="{ name: 'test', params:{name:2}}">test</router-link>
<router-view></router-view>
在路由配置里
routes: [
{
path: '/first',
name: 'first',
component: first,
children: [
{
path: 'detail',
name: 'detail',
component: detail
},
{
path: 'test',
name: 'test',
component: test
},
{
path: '/', //first直接重定向至detail路由
name: 'detail',
redirect: 'detail'
}
]
},
{
path: '/second',
name: 'second',
component: second
},
{
path: '',
name: 'first',
redirect: 'first'
}
]
在测试过程中,首次进入,是可以直接重定向至first/detail路由的,但是当我点击second路由,再次点击first按钮时,就无法重定向至detail,只能手动点击,
重定向会失效,所以在使用命名导航时,尽量不要不要涉及父子路由嵌套的关系,最好是导航至某个特定页面。所以不建议大范围使用命名式导航
4.直接路径导航 <router-link :to="{path:'/content/three'}" >
在使用path导航的时候,也遇到一些问题
<router-link :to="{path:'/content/three'}" >
例如,是这样配置路由的,
{
path: 'index',
name: 'Index',
component: Index
},
{
path: 'sec',
name: 'Sec',
component: Sec,
children: [
{
path: 'repair',
component: repair
},
{
path: '/',
redirect: 'repair'
}
]
},
{
path: 'three',
name: 'Three',
component: Three
}
在使用repair路由时,有时需要传一些参数,
在此时的sec组件却不在active状态,究其原因,就是因为repair
携带了参数,与配置的路由不匹配,所以无法找到父级路由,所以用下来感觉都不是那么完美,也许自己理解的有误,但是目前目前遇到的情况确实是这样。
<router-link :to="{path:'/sec/repair',query:{id:this.id}}" >
Vue-router导航问题的更多相关文章
- vue router 导航守卫生命周期
导航守卫 导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的.(记住参数或查询的改变并不会触发进入/离开的导航守卫.你可以通过观察$r ...
- [Vue 牛刀小试]:第十四章 - 编程式导航与实现组件与 Vue Router 之间的解耦
一.前言 在上一章的学习中,通过举例说明,我们了解了 Vue Router 中命名路由.命名视图的使用方法,以及如何通过 query 查询参数传参,或者是采用 param 传参的方式实现路由间的参数传 ...
- Vue Router的导航解析过程
在我没读官方的vue router文档之前,我怎么也没想到路由的解析过程竟然有12步. 12步如下: 导航被触发. 在失活的组件里调用离开守卫beforeRouteLeave . 调用全局的 befo ...
- Vue Router 路由守卫:完整的导航解析流程
完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). ...
- Vue 2.0 + Vue Router + Vuex
用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...
- Vue.js 2.x笔记:路由Vue Router(6)
1. Vue Router简介与安装 1.1 Vue Router简介 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,构建单页面应用. Vue Rout ...
- Vue Router学习笔记
前端的路由:一个地址对应一个组件 Vue Router中文文档 一.路由基本使用 第1步:导入Vue Router: <script src="https://unpkg.com/vu ...
- vue router.push(),router.replace(),router.go()和router.replace后需要返回两次的问题
转载:https://www.cnblogs.com/lwwen/p/7245083.html https://blog.csdn.net/qq_15385627/article/details/83 ...
- 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)
阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)
昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...
随机推荐
- Linux 网络编程 入门-常用函数
网络连接无外乎服务器和客户端两方面的编程. 对于服务器大致的流程是:1---调用socket函数创建套接字 2---调用bind函数分配IP地址和端口号 3---调用listsen函数将套接字转为可接 ...
- zookeeper名字服务
10.12.67.31 #!/bin/shmkdir -p /data/zk-install/cd /data/zk-install/wget -q -O ons_agent-1.0.5.tar.gz ...
- oracle 数据定义语言(DDL)语法
DDL语言包括数据库对象的创建(create).删除(drop)和修改(alter)的操作 1.创建表语法 create table table_name( column_name datatype ...
- tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)
在开发过.net项目的电脑上安装eclipse配置tomcat运行时打不开页面问题描述,这也是本人亲生经历,找了好多资料网上大多都是tomcat配置问题描述,今天突然想到是不是IIS的问题,果然上网一 ...
- oracle存储过程 out cursor
create or replace procedure BUILDEMPLID(emp_cursor out sys_refcursor) is n_emplid number; n_emplid1 ...
- ubuntu18.04搭建nfs
1.服务端安装 #apt-get update -y #apt-get install -y nfs-kernel-server #apt-get enable nfs-kernel-server 2 ...
- Hibernate中的实体规则、对象状态和进阶-一级缓存
一.hibernate中的实体规则 1.实体类创建的注意事项 2.主键类型 3.主键生成策略 (1)代理主键 (2)自然主键 二.hibernate中的对象状态 1.对象分为三种状态 2.三种状态的转 ...
- redis_字典_哈希hash
字典.哈希表基本数据结构 redis字典使用哈希表作为底层实现,基本结构就是数组+散列 typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈 ...
- Javaweb 编解码流程
参考: https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/#N10263 https://www.cnblogs.com/ch ...
- Python基础-数据类型-转摘
1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j)和(2.3-4. ...