Route 컴포넌트에 Prop 전달하기

$route 를 사용하면 특정 URL에서만 사용할 수 있으므로 컴포넌트의 유연성을 제한하며, 경로와 긴밀하게 결합됩니다. props 옵션을 사용하여 이 동작을 분리 할 수 있습니다.

다음을

const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}
const routes = [{ path: '/user/:id', component: User }]

이렇게 바꿀수 있습니다.

const User = {
  // route param과 똑같은 이름의 prop을 추가해야합니다.
  props: ['id'],
  template: '<div>User {{ id }}</div>'
}
const routes = [{ path: '/user/:id', component: User, props: true }]

이를 통해 어디서나 컴포넌트를 사용할 수 있으므로 컴포넌트를 더 쉽게 재사용하고 테스트 할 수 있습니다.

부울 모드

props true 로 설정되면 route.params 가 컴포넌트 props로 설정됩니다.

명명 된 뷰

명명 된 뷰가 있는 경로의 경우 명명 된 각 뷰에 대해 props를 정의 할수 있습니다.

const routes = [
  {
    path: '/user/:id',
    components: { default: User, sidebar: Sidebar },
    props: { default: true, sidebar: false }
  }
]

객체 모드

props 가 객체 일 때 이것은 컴포넌트 props로 설정됩니다. props가 static 일 때 유용합니다.

const routes = [
  {
    path: '/promotion/from-newsletter',
    component: Promotion,
    props: { newsletterPopup: false }
  }
]

함수 모드

props을 반환하는 함수를 만들 수 있습니다. 이를 통해 매개 변수를 다른 유형으로 캐스트하고 정적 값을 경로 기반 값과 결합하는 등의 작업을 수행 할 수 있습니다.

const routes = [
  {
    path: '/search',
    component: SearchUser,
    props: route => ({ query: route.query.q })
  }
]

URL /search?q=vue{query: 'vue'} SearchUser 컴포넌트에 props으로 전달합니다.

props 함수는 경로 변경시에만 평가되므로 상태없는(Stateless) 함수여야 합니다. props를 정의하기 위해 상태가 필요한 경우 래퍼 컴포넌트를 사용하면 vue가 상태 변경에 반응 할 수 있습니다.

고급 사용법은 예제를 확인하십시오.