Pinia+Router学习笔记(十四)

简介: 本节记录Vue-Router中路由过渡动效相关内容

在进行路由跳转的时候我们也可以设置一些动效,让整个过程看起来没那么枯燥(这里使用animate.css动画库)

import { createApp, toRaw } from 'vue'
import router from './router'
import App from './App.vue'
// 引入动画库
import 'animate.css'
const app = createApp(App)

app.use(router)

app.mount('#app')
<template>
  <div>
    <router-view #default="{ route, Component }">
      <transition
        :enter-active-class="`animate__animated animate__backInRight`"
        >
        <component :is="Component"></component>
      </transition>
    </router-view>
  </div>
</template>

<script setup lang="ts">
  import { ref, reactive } from 'vue'
</script>

<style scoped></style>

router-view有一个默认作用域插槽,接收两个变量route和Component,route包含跳转时的一些路由信息,Component则是VNode,可通过动态组件展示在页面上。上图这样的处理方式让所有的路由都使用animate__backInRight这个动画,如果想让不同路由组件使用不同动画可以在meta中定义动画名

<template>
  <div>
    <router-view #default="{ route, Component }">
<!--       定义动画类名,从route.meta中取 -->
      <transition
        :enter-active-class="`animate__animated ${route.meta.transition}`"
        >
        <component :is="Component"></component>
      </transition>
    </router-view>
  </div>
</template>

<script setup lang="ts">
  import { ref, reactive } from 'vue'
</script>

<style scoped></style>
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'

// declare声明模块防止类型报错
declare module 'vue-router' {
  interface RouteMeta {
    transition: string
  }
}

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    meta: {
      // 定义动画名
      transition: 'animate__backInRight',
    },
    component: () => import('../components/login.vue'),
  },
  {
    path: '/reg',
    component: () => import('../components/reg.vue'),
  },
]

const router = createRouter({
  history: createWebHashHistory(),
  routes,
})

router.beforeEach((to, from, next) => {
  next(true)
})

export default router
相关文章
|
前端开发
前端学习笔记202304学习笔记第十九天-vue3.0-vue2的项目中创建路由2
前端学习笔记202304学习笔记第十九天-vue3.0-vue2的项目中创建路由2
49 0
|
前端开发
前端学习笔记202304学习笔记第十九天-vue3.0-vue2的项目中创建路由1
前端学习笔记202304学习笔记第十九天-vue3.0-vue2的项目中创建路由1
71 0
|
存储 JavaScript 前端开发
Vue —— 进阶 vue-router 路由(零)(路由的概念、基本使用)
Vue —— 进阶 vue-router 路由(零)(路由的概念、基本使用)
115 0
|
前端开发
Pinia+Router学习笔记(十五)
本节记录Vue-Router中关于路由滚动行为的相关内容
90 0
Pinia+Router学习笔记(十一)
本节记录嵌套路由&命名视图相关内容
138 0
Pinia+Router学习笔记(十三)
本节记录Vue-Router中路由守卫相关知识
120 0
Pinia+Router学习笔记(十二)
本节记录Vue-Router的两种路由重定向方式
133 0
|
前端开发 网络架构
Pinia+Router学习笔记(十六)
本节记录Vue-Router中动态路由相关内容
209 0
|
前端开发
react实战笔记159:两种router第二种
react实战笔记159:两种router第二种
74 0
react实战笔记159:两种router第二种
|
前端开发
react实战笔记158:两种router第一种
react实战笔记158:两种router第一种
64 0
react实战笔记158:两种router第一种