vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...

模式

vue-router中的模式选项主要在router实例化的时候进行定义的,如下

const router = new VueRouter({

mode: ‘history‘, // 两种类型history 还有 hash

routes: routes // 可以缩写成routes

})

有两种模式可供选择,history 和 hash,大致对比一下,

模式优点缺点

hash

使用简单、无需后台支持

在url中以hash形式存在,不会传到后台

history

地址明确,便于理解和后台处理

需要后台配合

hash模式对于后台来讲就是一个url,因为地址中的hash值是不会传到后台的,所以服务器端做一个根地址的映射就可以了。

history模式最终的路由都体现在url的pathname中,这部分是会传到服务器端的,因此需要服务端对每一个可能的path值都作相应的映射。或者采用模糊匹配的方式进行映射。

除此之外,history模式下,如果后端不是一对一的进行映射,而是模糊匹配的话,那么就要注意一下404的情况了。这个时候就需要在前端router中定义404页面了。

404路由的定义

由于router本身的匹配是从上到下的,如果在前面找到了匹配的路由,就跳转了。因此可以直接在最后添加404的路由,如下

let routerConfig = [{

path: ‘/pages‘,

component: App,

children: [{

path: ‘demo/step1/list‘,

component: coupon,

name: ‘coupon-list‘,

meta: {

title: ‘红包‘

}

}]

}, {

path: ‘*‘,

component: NotFound,

name: ‘notfound‘,

meta: {

title: ‘404-页面丢了‘

}

}]

在前面匹配不到的时候,* 代表全部,就是都指向404页面

路由钩子

路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的,靠。。好拗口啊。

总体来讲vue里面提供了三大类钩子

1、全局钩子

2、某个路由独享的钩子

3、组件内钩子

全局钩子

顾名思义,全局钩子全局用,使用如下

const router = new VueRouter({

mode: ‘history‘,

base: __dirname,

routes: routerConfig

})

router.beforeEach((to, from, next) => {

document.title = to.meta.title || ‘demo‘

if (!to.query.url && from.query.url) {

to.query.url = from.query.url

}

next()

})

router.afterEach(route => {

})

某个路由独享钩子

就像说的一样,给某个路由单独使用的,本质上和后面的组件内钩子是一样的。都是特指的某个路由。不同的是,这里的一般定义在router当中,而不是在组件内。如下

const router = new VueRouter({

routes: [

{

path: ‘/foo‘,

component: Foo,

beforeEnter: (to, from, next) => {

// ...

},

beforeLeave: (to, from, next) => {

// ...

}

}

]

})

组件内钩子

首先看一下官方定义:

你可以在路由组件内直接定义以下路由导航钩子

beforeRouteEnter

beforeRouteUpdate (2.2 新增)

beforeRouteLeave

路由组件!路由组件!路由组件!重要的事情说三遍,大家一定要注意这里说的是“路由组件”,而路由组件!== 组件,路由组件!== 组件,路由组件!== 组件!之前一直没注意这点,然后在子组件里面傻乎乎的调钩子函数发现一直没用。。。

我们先来看一下什么是路由组件?

路由组件:直接定义在router中component处的组件

也就是说router中定义的入口vue文件之外的组件,是没有钩子函数的,也就不用说使用了。但是如果你使用了并不会报错,只是没反应。(本想画个图的,太懒了。。。自己理解理解吧,很好理解的)

这里再回头看下这个路由内钩子是怎么用的,很简单和data、method平级的方法

beforeRouteLeave(to, from, next) {

// ....

next()

},

beforeRouteEnter(to, from, next) {

// ....

next()

},

beforeRouteUpdate(to, from, next) {

// ....

next()

},

computed: {},

method: {}

三种路由钩子中都涉及到了三个参数,这里直接上官方介绍吧

to: Route: 即将要进入的目标 路由对象

from: Route: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

next(‘/’) 或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络基础概念知识笔记

1、计算机网络的发展阶段 1.1、具有通信功能的单机系统 该阶段的模式为终端-计算机网络,属于早期计算机网络的主要形式。它将一台计算机经过通信线路和若干个终端直接相连 1.2 具有通信功能的多机系统 针对单机系统的改进,在主计算机的外围增加了一台计算…

python模块下载失败_python 安装tushare模块出错的一个解决方法

(写于20200519) Tushare金融大数据社区 免费提供各类金融数据和区块链数据。我学python的动力之一就是使用金融数据进行量化投资。 原以为安装thshare是很容易的事,在cmd窗口输入pip install tushare后,似乎安装没报错&#xff0c…

winform中键盘和鼠标事件的捕捉和重写(转)

在 编写winform应用程序时,有时需要无论在哪个控件获取焦点时,对某一个键盘输入或者鼠标事件都进行同样的操作。比如编写一个处理图片的应用程序时, 希望无论当前哪个控件获得焦点,当用户按上、下、左、右键时,图片控件…

redisTemplate获得key的过期时间方法

/** * 从redis中获取key对应的过期时间; * 如果该值有过期时间,就返回相应的过期时间; * 如果该值没有设置过期时间,就返回-1; * 如果没有该值,就返回-2; */ redisTemplate.opsForValue().getOperations().getExpire("key的名称")

2020年“1024”,程序员日

1024程序员日向可爱的程序员致敬随着时代的发展,大数据技术行业发展愈趋成熟,坚持自己对知识、技术和创新追求的程序员层出不穷。相信很多人都不知道,其实,程序员也有他们自己专属的节日: 程序员日。每个节日都有自己的来历和含义…

小程序内嵌h5页面分享_微信小程序webview内页面分享

因为项目原因,之前在微信小程序内部使用 webview 嵌套了 h5 页面,现在要添加一个新的功能,用户在哪个页面进行了分享,被分享的用户从链接进来就跳转到哪个分享页面。先了解一下 web-view 组件的限制,web-view 是承载网…

shell shift与{}_一文掌握shell脚本中shift的用法及功能

概述今天主要介绍下shell脚本中shift的一些用法,这个命令还是相对比较少见的。一、shift介绍shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。简而言之&…

redisTemplate设置key零点过期,生成自增的单号

public String getId() {String key "finance:funs:code";Long incr getIncr(key);if (incr 0) {incr getIncr(key);//从0001开始}DecimalFormat df new DecimalFormat("0000");//四位序列号String format df.format(incr);return format;}public Lo…

docker log 文件 清理

1 查看docker log 文件位置 docker inspect *** 2 定时清理 truncate -s 0 /var/lib/docker/containers/*/*-json.log docker 日志管理 https://docs.docker.com/engine/admin/logging/json-file/ 全局配置 默认位置 /etc/docker/daemon.json 由dockerd 启动参数 --config-fi…

计算机网络基础:常见的网络传输介质

传输介质是信号传递的媒体,常用的网络传输介质包括有线介质(双绞线、同轴电缆、光纤等)和无线介质(微波、红外线、激光等)。 1、双绞线 双绞线是目前最普遍的传输介质,分为两类:屏蔽双绞线&…

json为全局变量 vue_vue 设置全局变量、指定请求的 baseurl

一. 基本环境前端vue:2.5.6axios:0.18使用vue脚手架构建项目。参照:webstorm搭建vue项目后台ssm框架前后端数据采用json格式传输二. 前端配置axios配置1.安装:npm install axios --save2.在所需组件中引入axios:import…

java 多项式拟合最多的项数_Matlab概率统计与曲线拟合

一、二项分布二项分布来源于伯努利试验 (事件发生概率 ) :含义为独立重复N次试验后, 事件总共发生k次的概率分布函数 二项分布记为 binopdf 获得事件共发生次的概率 binocdf 为事件最多发生次的概率 binornd 将生成一个服从二项分布 规模为 的随机矩阵二项分布的数字特征…

mysql -- MAC下安装配置mysql

1:进入官网,链接是 https://dev.mysql.com/downloads/mysql/ 点击第一个dmg文件,download 2:点击 No thanks, just start my download. 3:下载到本地到dmg文件 4:安装MySQL,双击 mysql.dmg 文件,进行安装。 注意:安装…

负载均衡配置与使用

Nginx负载均衡的理解 Nginx是一个轻量级的、高性能的WebServer,他主要可以干下面两件事: 作为http服务器(和apache的效果一样) 作为反向代理服务器实现负载均衡 现在Nginx到处都可以见到,经常会看到宕机后的网页会显示…

计算机网络基础:网络分类和拓扑结构知识笔记

​​​​​​​1、计算机网络分类 城域网、广域网、局域网网对比 网络分类 缩写 分布距离 计算机分布范围 传输速率范围 局域网 LAN 10、100、1000m左右 房间、楼寓、校园 4Mb/s- 1Gb/s 城域网 MAN 10KM左右 城市 50Kb/s-100Mb/s 广域网 WAN 100KM左右 国家或…

php发送数据到视图格式_PHP-FPM的相关知识的深度解释

一、需要搞清楚几个名词概念1. CGI(Common Gateway Interface,CGI)通用网关接口, 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服…

stm32超声波测距代码_干货!特斯拉Autopilot核心传感器解读超声波雷达篇

加入高工智能汽车行业群(自动驾驶行业4群,车联网智能座舱3群,智能商用车行业群),加微信:15818636852,并出示名片,仅限智能网联汽车零部件及OEM厂商。目前为止,特斯拉的Autopilot一共经历了三代硬…

记录

https://xclient.info/ https://www.macbl.com/ https://www.macwk.com/

进阶篇-安卓系统:2.多点触控的交互处理

1.android 触摸事件侦听 安卓的用户交互方式包括两种,一种是点击交互,一种是触摸交互。点击交互就是手指按下抬起一个动作组。而触摸交互分为按下(down),移动(move),抬起&#xff08…

计算机网络:网络设备知识笔记

网络设备是实现计算机网络实现用户通信和交互信息的硬件基础。常用的网络设备有中继器、网桥、路由器、集线器等。 1、网络传输介质互联设备 网络线路和用户节点具体衔接时,需要网络传输介质的互联设备。比如T型头(同轴电缆连接器)、收发器、…