{ path: 'detail/:movieId', components: { detail: () => import('@/views/movie/detail.vue'), } }
對於上面這種寫法, 咱們能夠在傳遞過去的組件中,直接使用this.$route.params.movieId
接受參數。經過查閱資料,有必定的缺陷。
在組件中使用 $route 會使之與其對應路由造成高度耦合,從而使組件只能在某些特定的 URL 上使用,限制了其靈活性。
故咱們能夠採起props
將路由組件解偶。html
{ path: 'detail/:movieId', components: { detail: () => import('@/views/movie/detail.vue'), }, props: { detail: true } }
組件接收方式vue
export default { name: "detail", props: ['movieId'], components: { Header }, mounted() { // 這種方式也能夠傳遞id過來,在組件中使用 $route 會使之與其對應路由造成高度耦合,從而使組件只能在某些特定的 URL 上使用,限制了其靈活性。 // console.log(this.$route.params.movieId) console.log(this.movieId) }, }
這樣你即可以在任何地方使用該組件,使得該組件更易於重用和測試。ide
參考官方文檔測試