hairyf/overlastic

如何支持 element-plus 全局配置组件

Closed this issue · 4 comments

153264 commented

在主应用配置,但是弹出层的app应用没有配置

APP应用也在入口main.ts use unoverlay了
1684240791266
1684240934478
1684240934498

hairyf commented

由于 element-plus 是使用组件来进行挂载注入更多应用信息,而 @overlays/vue 只能继承当前 createApp 中的全局属性,所以你需要在 UnifiedOverlay 组件中使用 el-config-provider

<!-- overlay.vue -->
<script setup>
const { visible, resolve, reject } = useOverlay({/* ... */})
</script>

<template>
  <el-config-provider>
     <el-dialog>...</el-dialog>
   </el-config-provider>
</template>

目前你可以将 el-config-provider 封装成一个通用的注入层,并提供给 App.vueoverlays 组件使用。

<!-- mount-privder.vue -->
<template>
  <el-config-provider ...>
     <slot />
   </el-config-provider>
</template>
153264 commented

你的意思是这样吗?

<!-- mount-privder.vue -->
<template>
  <el-config-provider ...>
     <slot />
   </el-config-provider>
</template>
<!-- App.vue -->
<template>
  <mount-privder>
    <!-- code ... -->
  </mount-privder>
</template>
<!-- overlays.vue 弹出层组件 -->
<template>
  <mount-privder>
     <el-dialog>
      <!-- code... -->
     </el-dialog>
  </mount-privder>
</template>
hairyf commented

是的,你也可以使用 useInjectHolder API,通过创建持有者,塞入到当前的 vnode 当中,它可以在注入层组件内继承属性。

153264 commented

这种不太适合我,我是使用createOverlay统一导出js,页面调用弹出。