Vue路由 屬性的使用


<router-link> 組件支持用戶在具有路由功能的應用中 (點擊) 導航。 通過 to 屬性指定目標地址,默認渲染成帶有正確鏈接的 <a> 標簽,可以通過配置 tag 屬性生成別的標簽.。另外,當目標路由成功激活時,鏈接元素自動設置一個表示激活的 CSS 類名。

 好處:

  • 無論是 HTML5 history 模式還是 hash 模式,它的表現行為一致,所以,當你要切換路由模式,或者在 IE9 降級使用 hash 模式,無須作任何變動。

  • 在 HTML5 history 模式下,router-link 會攔截點擊事件,讓瀏覽器不在重新加載頁面。

  • 當你在 HTML5 history 模式下使用 base 選項之后,所有的 to 屬性都不需要寫(基路徑)了。

以下兩種實現方式得到的效果一樣

一、

 <a href="#/login">登陸</a>

<a href="#/register">注冊</a> 

二、

<router-link to="/login">登陸</router-link>

 <router-link to="/register">注冊</router-link>

 

<router-link>默認渲染為一個<a>標簽

假如我們想把<router-link>渲染成其他標簽,可修改其屬性tag,如:

<router-link to="/login" tag=“span”>登陸</router-link>

 <router-link to="/register">注冊</router-link>

 


e.g.
 

表示目標路由的鏈接。當被點擊后,內部會立刻把 to 的值傳到 router.push(),所以這個值可以是一個字符串或者是描述目標位置的對象

<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染結果 -->
<a href="home">Home</a>
 
<!-- 使用 v-bind 的 JS 表達式 -->
<router-link v-bind:to="'home'">Home</router-link>
 
<!-- 不寫 v-bind 也可以,就像綁定別的屬性一樣 -->
<router-link :to="'home'">Home</router-link>
 
<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>
 
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
 
<!-- 帶查詢參數,下面的結果為 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

 

以上是router-link,還有一種在js中使用的方式

 

vue.js中想要跳轉到不同的 URL,需要使用 router.push 方法。

這個方法會向 history 棧添加一個新的記錄,當用戶點擊瀏覽器后退按鈕時,則回到之前的 URL。

當你點擊 <router-link> 時,這個方法會在內部調用,所以說,點擊 <router-link :to="..."> 等同於調用 router.push(...)。

聲明式:<router-link :to="...">
編程式:router.push(...)
該方法的參數可以是一個字符串路徑,或者一個描述地址的對象。

// 字符串
router.push('home')

// 對象
this.$router.push({path: '/login?url=' + this.$route.path});

// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})

// 帶查詢參數,變成/backend/order?selected=2
this.$router.push({path: '/backend/order', query: {selected: "2"}});

// 設置查詢參數
this.$http.post('v1/user/select-stage', {stage: stage})
.then(({data: {code, content}}) => {
  if (code === 0) {
  // 對象
  this.$router.push({path: '/home'});
  }else if(code === 10){
  // 帶查詢參數,變成/login?stage=stage
  this.$router.push({path: '/login', query:{stage: stage}});
  }
});

// 設計查詢參數對象
let queryData = {};
if (this.$route.query.stage) {
queryData.stage = this.$route.query.stage;
}
if (this.$route.query.url) {
queryData.url = this.$route.query.url;
}
this.$router.push({path: '/my/profile', query: queryData});

 

replace,跳轉不留歷史記錄

類型: boolean
默認值: false
設置 replace 屬性的話,當點擊時,會調用 router.replace() 而不是 router.push(),於是導航后不會留下 history 記錄。即使點擊返回按鈕也不會回到這個頁面。
//加上replace: true后,它不會向 history 添加新記錄,而是跟它的方法名一樣 —— 替換掉當前的 history 記錄。

this.$router.push({path: '/home', replace: true})

//如果是聲明式就是像下面這樣寫:

<router-link :to="..." replace></router-link>

// 編程式:

router.replace(...)

 

 參考文章

router-link

 


免責聲明!

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



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