{ 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
参考官方文档测试