有些时候可能需要在路由跳转前后修改meta里面的相关属性值,这个时候就需要使用钩子函数(路由守卫),钩子函数有全局钩子局部组件钩子函数以及路由配置里面的钩子函数 (这些也叫路由守卫)

1.全局钩子函数:beforeEach()

在Vue Router中,beforeEach是用于注册全局前置守卫的函数。它允许你在路由导航触发之前执行一些逻辑

代码

const router = useRouter();
router.beforeEach((to, from) => {
  // 监听路由变化之前的操作  注意:这里是全局的 不建议用全局的
  // to.matched.some(record => record.meta.requiresAuth)
  if(to.name === "当前路由"){
    const { type} = to.params || {};
    to.meta.title = “你想要修改的值”;
    to.meta = {};
  }
})

注意:beforeEach 函数是全局函数,每次跳转都会触发,所以请写好当前页面的判断,否则滥用全局函数可能导致后期不好维护

2.单个组件里面的钩子函数

  • beforeRouteUpdate(路由进入当前组件/页面之前或者更新前)
  • beforeRouteLeave(路由离开当前组件/页面后)
  • beforeRouteEnter(组件进入组件/页面前)

code:

<script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({
  beforeRouteEnter(to, from, next) {
    // console.log('beforeRouteEnter=====');
    //进入当前页面时的操作
    console.log('beforeRouteEnter beforeRouteEnter 进入')
    next();
  },
  beforeRouteLeave(to,from,next){
    console.log('beforeRouteLeaveleave leave 离开')
    next();
  }
});
</script>

注意:这几个路由守卫钩子函数不能写在setup 的脚本里面 

GitHub 加速计划 / vu / vue
80
16
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 6 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐