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!

推薦閱讀: