Spec-Zone.ru › Vue Router 4

Переходы

Посмотреть бесплатный видеоурок на Vue School

Для использования переходов на компонентах маршрутов и анимации навигации, вам необходимо использовать API v-slot:

<router-view v-slot="{ Component }">
  <transition name="fade">
    <component :is="Component" />
  </transition>
</router-view>

Все API переходов работают одинаково в данном случае.

Переход на уровне маршрута

Вышеприведенное использование будет применять один и тот же переход для всех маршрутов. Если вы хотите, чтобы каждый компонент маршрута имел разные переходы, вы можете вместо этого объединить мета-поля и динамический name для <transition>.

const routes = [
  {
    path: '/custom-transition',
    component: PanelLeft,
    meta: { transition: 'slide-left' },
  },
  {
    path: '/other-transition',
    component: PanelRight,
    meta: { transition: 'slide-right' },
  },
]
<router-view v-slot="{ Component, route }">
  <!-- Use any custom transition and fallback to `fade` -->
  <transition :name="route.meta.transition || 'fade'">
    <component :is="Component" />
  </transition>
</router-view>

Динамический переход на основе маршрута

Также возможно динамически определить переход, используемый на основе отношений целевого маршрута и текущего маршрута. Используя фрагмент кода, очень похожий на предыдущий:

<!-- use a dynamic transition name -->
<router-view v-slot="{ Component, route }">
  <transition :name="route.meta.transitionName">
    <component :is="Component" />
  </transition>
</router-view>

Мы можем добавить после-навигационный хук, чтобы динамически добавить информацию в поле meta на основе глубины маршрута.

router.afterEach((to, from) => {
  const toDepth = to.path.split('/').length
  const fromDepth = from.path.split('/').length
  to.meta.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
})

Принудительный переход между повторно используемыми представлениями

Vue может автоматически повторно использовать похожие компоненты, избегая любого перехода. К счастью, можно добавить атрибут key, чтобы принудительно перейти к переходу. Это также позволяет вызывать переходы, оставаясь на одном и том же маршруте с разными параметрами:

<router-view v-slot="{ Component, route }">
  <transition name="fade">
    <component :is="Component" :key="route.path" />
  </transition>
</router-view>
Предложить изменения на этой странице
Композиционный API
Поведение прокрутки

© 2013–present Evan You
Licensed under the MIT License.
https://next.router.vuejs.org/guide/advanced/transitions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API