[Vue3] 高阶组件

前言

高阶组件用于复用组件逻辑,返回一个增强后的组件。高阶组件主要用于跨多个组件复用逻辑,比如:

  • 日志记录
  • 权限控制
  • 性能监控

高阶组件

import { defineComponent, onMounted, h } from "vue";

export function withAuth<T>(WrappedComponent: any) {
  return defineComponent({
    name: "withAuth",
    setup(props, { attrs, slots }) {
      // 这里实现权限控制逻辑
      return () => h(WrappedComponent);
    }
  });
}

再路由配置中将路由组件传递给高阶组件:

import { withLoading } from "@/components/WithLoading";

const routes = [
  {
    name: "Main",
    path: "/main",
    redirect: "/main/posts",
    component: () => import("@/layouts/Main.vue").then(module => withLoading(module.default))
  }
];

权限控制也可利用路由守卫实现。通过路由配置中的 meta 决定哪些组件需要权限。

posted @ 2024-09-10 16:47  Himmelbleu  阅读(16)  评论(0编辑  收藏  举报