vue如何通過點擊事件實現頁面跳轉詳解
前言
頁面跳轉,我們一般都通過路由跳轉實現,通常情況下可直接使用router-link標簽實現頁面跳轉,但是如果我們想通過點擊別的標簽實現頁面跳轉,怎麼辦呢?這個時候我們就要用到this.$router.push()方法,下面來給大傢簡單介紹一下使用!
this.$router.push()
1.首先我們要定義一個點擊事件
2.在定義事件中調用this.$router.push()方法
<template> <button @click = "handle">點擊跳轉</button> </template> <script> export default{ methods:{ handle (){ // 路徑/home對應我在router目錄下index.js中定義的path屬性值 this.$router.push('/home'); } } } </script>
目標跳轉頁面路由在router目錄下index.js定義如下:
export default new Router({ routes: [ { path: '/home', name:'Home', component: Home, }, ] })
this.$router.push()中的參數規則
參數為字符串,即路徑名稱
// 路徑/home對應router目錄下index.js中定義的path屬性值 this.$router.push('/home');
參數為對象
// 對應router目錄下index.js中定義的path this.$router.push({path:'/home'});
參數為路由命名
// 對應router目錄下index.js中定義的name this.$router.push({name:'Home'});
帶傳遞參數
// params裡面放置的是我們要傳遞過去的參數 this.$router.push({name:'Home',params:{user:'david'}});
帶查詢參數
// 帶查詢參數,傳遞過去的內容會自動拼接變成/home?user=david this.$router.push({path:'/home',query:{user:'david'}});
參數的接收
當我們使用params進行傳參時,隻需在接收參數的地方使用this.$route.params進行接收即可
eg:
//傳參 this.$router.push({name:'Home',params:{user:'david'}}); // 在name為Home的組件中接收參數 const id=this.$route.params.id; console.log(this.$route.params);//打印結果為{user:'david'}
當我們使用query傳參時,隻需在接收參數的地方使用this.$route.query進行接收即可,用法同上
!!!這裡有一個小細節:$符號後面跟的是route不是router,跳轉的時候 $後面跟的是router!!!
註意
- query傳參的參數會帶在url後邊展示在地址欄(/home?user=david),params傳參的參數不會展示到地址欄
- 由於動態路由也是傳遞params的,所以在 this.$router.push() 方法中path不能和params一起使用,否則params將無效,需要用name來指定頁面
- 我們也可以用this.$router.replace()來實現頁面跳轉,二者的區別是push跳轉之後可以通過瀏覽器的回退鍵回到原來的頁面,而一旦使用replace跳轉之後,無法回到原來頁面
補充:VUE實現從一個頁面跳轉到另一個頁面的指定位置
例如,從網站的首頁點擊跳轉到指定頁面的底部。
首頁 home
<div @click="toPath('/targetPage#target')"> <p>點擊跳轉</p> </div>
methods:{ //點擊跳轉方法 toPath(path) { this.$router.push({path: path}) } }
跳轉到的頁面 targetPage
<div class="location" id="target"> <p>指定位置</p> </div>
//在mounted裡 mounted() { var hash = window.location.hash; var index = hash.lastIndexOf("#"); if (index != -1) { var id = hash.substring(index + 1, hash.length + 1); var div = document.getElementById(id); if (div) { setTimeout(function () { console.log($(div).offset().top); $('html, body').animate({scrollTop: $(div).offset().top - 43}, 500) }, 500); } } }
親測有效 :D
總結
到此這篇關於vue如何通過點擊事件實現頁面跳轉的文章就介紹到這瞭,更多相關vue點擊事件實現頁面跳轉內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!