useSingletonComponent.js 818 B

1234567891011121314151617181920212223242526272829
  1. import {createApp} from 'vue'
  2. import MxBuyVip from "@/components/mx-buy-vip/mx-buy-vip.vue";
  3. import MxQuestionCorrectPopup from "@/components/mx-question/components/mx-question-correct-popup.vue";
  4. const container = new Map()
  5. export function useSingletonComponent(component) {
  6. if (container.has(component)) return container.get(component)
  7. const div = document.createElement("div");
  8. document.body.appendChild(div);
  9. const app = createApp(component)
  10. const instance = app.mount(div)
  11. container.set(component, instance)
  12. // TODO:不确定是否需要完成注销时的操作
  13. return instance
  14. }
  15. export function useSingletonCorrectQuestion() {
  16. return useSingletonComponent(MxQuestionCorrectPopup)
  17. }
  18. export function useSingletonBuyVip() {
  19. return useSingletonComponent(MxBuyVip)
  20. }