踩坑,vue router-link和a標簽的本質區別


問題現象

首頁的標題跳轉,沒有進入規定的路由,而是被當做異常路由接收了

排查分析

圖片名稱

在跳轉前,明明已經添加動態路由,並且通過console.log()也打印出了路由,說明動態路由是添加成功的

導航Airticle模塊也是動態添加路由,是能成功跳轉的。證明添加路由的函數也是沒問題的

2000 thouthands later...
...
...

唯一的區別,是導航Airticle那邊用的是<router-link>標簽,首頁這邊用的是<a>標簽

猜測可能和使用的標簽有關

於是稍微修改下代碼進行對比測試實驗

<template>
<div class='articlePreview'>
// router-link 標簽
<router-link :to="{name:'detail'+homePrewlist.id, params:{id:homePrewlist.id}}"> {{homePrewlist.title}} </router-link>

// a 標簽
<a :href="'/artical/detail/'+homePrewlist.id"><h1>{{ homePrewlist.title }}</h1></a>
</div>
</template>

頁面就變成了如下樣子,分別點擊兩個標題,得到了不一樣的結果
圖片名稱

答案已經很明顯了,就是<router-link>標簽和<a>標簽的問題

繼續針對兩個標簽進行深究

a標簽

<a href="">鏈接 </a>

router-link

<router-link to=""></router-link>

a標簽

點擊a標簽從當前頁面跳轉到另一個頁面
通過a標簽跳轉,頁面就會重新加載,相當於重新打開了一個網頁

通過router-link進行跳轉不會跳轉到新的頁面,不會重新渲染,它會選擇路由所指的組件進行渲染

總結

通過a標簽和router-link對比,router-link避免了重復渲染,不像a標簽一樣需要重新渲染,導致一些動態添加路由的機制失效

文章來自 Yongchin'blog yongchin.xyz


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM