vue-route开发注意事项
1、router-link to 动态赋值
router-link组件的to属性值有两种写法,字符串类型和对象类型
如果要动态传值,比如放到for循环中,传入for的index值,这时就必须使用对象形式,动态传值
<router-link :to="{path:'/old_data_details/params/'+item.id}" > </router-link>

2、路由跳转的三种方式,及返回上一级
1)<router-link to="keyframes">点击验证动画效果 </router-link>
to属性值可以是路由字符串,也可以使对象形式
2)this.$router.push({ path:’/user’})
this.$router.push({
path:'/select', //跳转的路径
query:{ //路由传参时push和query搭配使用
id:this.id ,
}
})
3)this.$router.replace{path:‘/’ } 与push类似
返回上一级使用this.$router.go(-1) ,跳转到指定路由this.$router.push('/home')
3、路由重定向(设置默认路由)

4、vue监听路由变化
1)通过watch函数(注意:必须在跟组件中,才能监听到路由的变化)
// 监听,当路由发生变化的时候执行
watch:{
$route(to,from){
console.log(to.path);
}
},
或者
// 监听,当路由发生变化的时候执行
watch: {
$route: {
handler: function(val, oldVal){
console.log(val);
},
// 深度观察监听
deep: true
}
},
或者
// 监听,当路由发生变化的时候执行
watch: {
'$route':'getPath'
},
methods: {
getPath(){
console.log(this.$route.path);
}
}
2)通过 vue-router 的钩子函数 beforeRouteEnter beforeRouteUpdate beforeRouteLeave
<script>
export default {
name: 'app',
// 监听,当路由发生变化的时候执行
beforeRouteEnter (to, from, next) {
// 在渲染该组件的对应路由被 confirm 前调用
// 不!能!获取组件实例 `this`
// 因为当钩子执行前,组件实例还没被创建
},
beforeRouteUpdate (to, from, next) {
//beforeRouteUpdate守卫并不会在不同路由共用同一组件时触发
//当从/item/22/edit切换到/item/11/edit时,会触发beforeRouteUpdate。
//但如果从/item/22/edit切换到/item/create时,并不会触发beforeRouteUpdate。 // 在当前路由改变,但是该组件被复用时调用,即同一路由下只有参数发生变化的情况下可以用此钩子监听到
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
},
beforeRouteLeave (to, from, next) {
// 导航离开该组件的对应路由时调用
// 可以访问组件实例 `this`
}
</script>
3)如上面提到的 <router-view :key="key"></router-view>
对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,页面是不是刷新的,即hashChage函数是不会触发的,这时,可以给路由组件router-view添加 :key=""属性来阻止复用
然后动态参数的路由跳转就是可以刷新页面了
Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性,这样就可以如愿刷新数据了
<router-view :key="key"></router-view>
computed: {
key() {
return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
}
}
5、图片 :src=" " 使用data里面的url时出现404的情况
这么写会出现404错误,图片路径不被webpack解析,直接展示为src='./1.png'
<li v-for="(item,index) in images" :key="index">
<img :src="item.src"></li>
//js部分
data(){
return {
images:[{src:'./1.png'},{./.png}]
}
}
应该这么写,将图片作为模块加载进来require
data(){
return {
iconsData : [
{
pageName:'guohu',
iconUrl:require('../assets/img/guohu.png'),
iconName:'过户',
toUrl:this.handleUrlStr('guohu')
},
{
pageName:'xiaohao',
iconUrl:require('../assets/img/xiaohao.png'),
iconName:'销号及复装',
toUrl:this.handleUrlStr('xiaohao')
}
]
}
}
6、vue路由守卫
//创建路由实例
const router = new Router({
routes: [
{
path: '/',
name: 'home',
component: Home,
meta:{
isLogin:true // 添加该字段,表示进入这个路由是需要登录的
}//路由元
},{
path:"/login",
name:"login",
component:Login
}
]
}) // 路由守卫
router.beforeEach((to,from,next)=>{
if(to.matched.some(res=>res.meta.isLogin)){//判断是否需要登录
if (sessionStorage['username']) {
next();
}else{
next({
path:"/login",
query:{
redirect:to.fullPath
}
});
} }else{
next()
}
}); export default router;
to 表示将要跳转到的组件 (目标组件)
console.log(from); //(源组件)
next();
next 是一个函数
next() 进入下一个组件的钩子函数
next(false) 阻止跳转 中断导航
next("/login") 进入指定的组件的钩子函数
注意:路由守卫处理了逻辑之后,必须调用next()函数,路由才会向下执行
7、区分$router 对象和 $route对象
$router : 是路由操作对象,只写对象 ,用来操作路由的行为
$route : 路由信息对象,只读对象,获取当前路由的信息
参考:https://blog.csdn.net/qq_42928918/article/details/88406257
vue-route开发注意事项的更多相关文章
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- electron-vue:Vue.js 开发 Electron 桌面应用
相信很多同学都知道 Electron 可以帮助开发人员使用前端技术开发桌面客户端应用,今天介绍的 electron-vue 框架是一套基于 Vue.js 开发 Electron 桌面应用的脚手架,该项 ...
- 深入浅出的webpack4构建工具--webpack4+vue+route+vuex项目构建(十七)
阅读目录 一:vue传值方式有哪些? 二:理解使用Vuex 三:webpack4+vue+route+vuex 项目架构 回到顶部 一:vue传值方式有哪些? 在vue项目开发过程中,经常会使用组件来 ...
- MPVUE - 使用vue.js开发微信小程序
MPVUE - 使用vue.js开发微信小程序 什么是mpvue? mpvue 是美团点评前端团队开源的一款使用 Vue.js 开发微信小程序的前端框架.框架提供了完整的 Vue.js 开发体验,开发 ...
- vue前端开发那些事——vue开发遇到的问题
vue web开发并不是孤立的.它需要众多插件的配合以及其它js框架的支持.本篇想把vue web开发的一些问题,拿出来讨论下. 1.web界面采用哪个UI框架?项目中引用了layui框架.引入框架 ...
- Cobalt环境搭建及 Web开发注意事项
一.在Linux系统上搭建Cobalt运行环境 Cobalt是一款开源轻量级HTML5/CSS/JS浏览器,旨在于用最少的CPU.GPU.RAM等资源消耗提供丰富的应用程序开发.为了使前端开发者验证自 ...
- vue前端实战注意事项
1. vue前端实战注意事项 1.1. 预备 1.1.1. Eslint 这是个语法检查工具,我用webstorm作为开发的ide,这个语法检查还是太严格了,一个空格啥的都会报错,对新手来讲还是建议关 ...
- Vue项目开发相关问题总结
Vue项目开发相关问题总结 一.创建一个项目(两种方式) 1.通过CLI命令行创建,具体步骤如下: (1)Node 版本要求 Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11 ...
- uni-app开发注意事项
关于vue 1.注意 如果使用老版的非自定义组件模式,即manifest中"usingComponents":false,部分模版语法不支持,但此模式已于2019年11月起下线. ...
- delphi 串口 关于RS485总线通信协议开发注意事项
http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1 前言 近段时间发现我们系统在进行设备 ...
随机推荐
- .net 后台以post方式调用微信公众平台接口
public class Fresult { public int errcode { get; set; } public string errmsg { get; set; } public st ...
- 必须修改getdate()格式,判断是否处于两个日期之间
), ) ), )<= 周次结束日期 ), ) -- 这样的格式结果为:2019-09-01 --如果不进行转换,查出来含有日期和时间,否则两个边界无法查询出来
- 【转载】C#中List集合使用LastIndexOf判断元素最后一次出现的索引位置
在C#的List集合操作中,有时候需要判断元素对象在List集合中第一次出现的索引位置信息,此时需要使用到List集合的IndexOf方法来判断,如果元素存在List集合中,则IndexOf方法返回所 ...
- 正则表达式修饰符 i、g、m、s、U、x、a、D、e 等。
正则表达式中常用的模式修正符有i.g.m.s.U.x.a.D.e 等. 它们之间可以组合搭配使用. i 不区分(ignore)大小写: 例如: /abc/i 可以匹配 abc.aBC.Abc g 全局 ...
- react native错误排查-TypeError: window.deltaUrlToBlobUrl is not a function
错误现象:window.deltaUrlToBlobUrl is not a function 最近在调试react-native时,打开浏览器调试时发现报错window.deltaUrlToBlob ...
- react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process
背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的buil ...
- 使用Blynk打造一款物联网产品
前言 一直以来想自己打造一款物联网产品. 围绕这个话题写过一些文章: 一辆树莓派可编程小车的问题 基于树莓派的积木化编程解决方案 物联网相关开源项目整理 物联网.开源硬件与开源社区 之前在一辆树莓派可 ...
- Spring @Cacheable注解 && 事务@Transactional 在同一个类中的方法调用不生效
@Cacheable 注解在对象内部调用不会生效 代码示例:ProductServiceImpl.java public List<ProductInfoVO> getProductLis ...
- 乌班图安装Lnmp环境
1.nginx //切到root用户 sudo su //更新源 apt-get update //安装 apt-get install nginx //安装完成后配置文件目录 cd /etc/ngi ...
- python开发总结
1.思维缜密的编程逻辑 2.满足明确的目的需求 3.运用现成的轮子加以改造 4.学会装饰自己的程序 5.化繁为简 6.多用配置文件作为入口 7.注意扩展兼容