Vue Router 之 Named Routes
栏目: JavaScript · 发布时间: 6年前
内容简介:實務上我們不希望Vue 2.6.10Vue-router 3.0.3
實務上我們不希望 <router-link/> 直接綁定一個 Route,這樣將來 route 改變時,會所有 <router-link/> 都要改,而希望綁定到一個 Name,這樣將來 Route 改變時,只要修改 route.js 即可,而不用每個 HTML Template 都修改。
Version
Vue 2.6.10
Vue-router 3.0.3
Vue CLI 3.8.4
Normal Route
Product /products/1 T-Shirts
route.js
import Vue from 'vue';
import Router from 'vue-router';
import Home from './views/Home.vue';
Vue.use(Router);
export default new Router({
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
},
{
path: '/products/:id',
name: 'products',
component: () => import(/* webpackChunkName: "products" */ './views/Products.vue'),
},
]
});
19 行
{
path: '/products/:id',
name: 'products',
component: () => import(/* webpackChunkName: "products" */ './views/Products.vue'),
},
當 route 為 /products/:id 時,使用 Products component。
App.vue
第 6 行
<router-link to="/products/1">Product</router-link>
<router-link/> 的 to 直接綁定 /products ,若將來 route 修改,則所有 HTML template 的 <router-link/> 都要跟著改。
Named Route
route.js
{
path: '/products/:id',
name: 'products',
component: () => import(/* webpackChunkName: "products" */ './views/Products.vue'),
},
Route object 有 name property,其實就是用來使用 named route。
App.vue
第 6 行
<router-link :to="{ name:'products', params: { id: 1 }}">Product</router-link>
<router-link/> 的 to 改用 attribute binding 到 route object,其 name 就是在 route.js 設定的 name 。
若要綁定到 param,則加上 params property。
Router.push() by Name
App.vue
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link> |
<a href="#" @click="onProductClick">Product</a>
</div>
<router-view/>
</div>
</template>
<script>
let onProductClick = function() {
this.$router.push({ name: 'products', params: { id: '1' } });
};
export default {
name: 'app',
methods: {
onProductClick,
}
}
</script>
除了使用 <router-link> tag 外,也可以使用 JavaScript。
第 6 行
<a href="#" @click="onProductClick">Product</a>
改用 HTML 的 <a> ,為了有底線,所以要保留 href="#" ,改用 onProductClick() 跳轉頁面。
13 行
let onProductClick = function() {
this.$router.push({ name: 'products', params: { id: '1' } });
};
將 object 傳入 this.$router.push() ,其中 name property 為 route 名稱, params property 為 要傳入資料。
Router.push() by Path
let onProductClick = function() {
this.$router.push({ path: 'products/1' });
};
也可以改用 path property,此時使用 string 即可。
Arrow Function
import router from './router';
let onProductClick = () => router.push({ path: 'products/1' });
若你很討厭透過 this context 存取 $route ,導致得使用 function expression 的話,也可以將 router import 進來,如此就可大膽使用 arrow function。
Conclusion
- Named route 讓
<router-link/>沒綁死特定 route,將來更容易維護 - 除了使用
<router-link/>外,也可使用 JavaScript 的router.push() - 若你喜歡 arrow function,也可將
routerimport 進來,如此就不需依賴thiscontext 存取$router
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
汇编语言(第2版)
王爽 / 清华大学出版社 / 2008-4 / 33.00元
《汇编语言(第2版)》是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的思想精心创作了《汇编语言(第2版)》。《汇编语言(第2版)》具有如下特点:采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在......一起来看看 《汇编语言(第2版)》 这本书的介绍吧!