getSolt.ts 593 B

123456789101112131415161718192021222324
  1. import { ComponentPublicInstance, SetupContext, EmitsOptions } from 'vue';
  2. /**
  3. * 获取指定插槽内容
  4. *
  5. * @param param0 组件实例instance,SetupContext(setup二入参),props
  6. * @param name 插槽名或者props名
  7. * @returns VNode
  8. */
  9. export default function getSlot(
  10. {
  11. instance,
  12. ctx,
  13. props = {},
  14. }: {
  15. instance?: ComponentPublicInstance;
  16. ctx?: SetupContext<EmitsOptions>;
  17. props?: any;
  18. },
  19. name = 'default',
  20. ) {
  21. const targetSlot = instance?.$slots[name] || ctx?.slots[name];
  22. return (targetSlot ? targetSlot(instance) : '') || props[name];
  23. }