Skip to content

Latest commit

 

History

History
58 lines (46 loc) · 1.64 KB

transitions.md

File metadata and controls

58 lines (46 loc) · 1.64 KB

Transitions

Vu que <router-view> est essentiellement un composant dynamique, on peut lui appliquer certains effets de transitions en utilisant le composant <transition> :

<transition>
  <router-view></router-view>
</transition>

Tout à propos de <transition> fonctionne également ici de la même manière.

Transition par route

L'utilisation du dessus applique la même transition pour chaque route. Si vous voulez que les composants de route aient des transitions différentes, vous pouvez utiliser à la place <transition> avec des noms différents à l'intérieur de chaque composant de route :

const Foo = {
  template: `
    <transition name="slide">
      <div class="foo">...</div>
    </transition>
  `
}

const Bar = {
  template: `
    <transition name="fade">
      <div class="bar">...</div>
    </transition>
  `
}

Transition dynamique basée sur la route

Il est aussi possible de déterminer la transition à utiliser en se basant sur la relation entre la route cible et la route actuelle :

<!-- utiliser un nom de transition dynamique -->
<transition :name="transitionName">
  <router-view></router-view>
</transition>
// et dans le composant parent,
// observer la `$route` pour déterminer la transition à utiliser
watch: {
  '$route' (to, from) {
    const toDepth = to.path.split('/').length
    const fromDepth = from.path.split('/').length
    this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
  }
}

Voir un exemple complet ici.