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.pswp.cn/news/271391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271391.shtml
英文地址,請注明出處:http://en.pswp.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型頭(同軸電纜連接器)、收發器、…