vue3同一页面多次渲染挂着同一组件出错问题

在这里插入图片描述

If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.

同一组件在页面上多次挂载,导致挂载失败,需要使用异步组件defineAsyncComponent()

defineAsyncComponent()定义一个异步组件,它在运行时是懒加载的。参数可以是一个异步加载函数,或是对加载行为进行更具体定制的一个选项对象。

在这里插入图片描述

const AsyncComp = defineAsyncComponent({
  loader: () => import('@/views/content/components/materialSelect'),
  // 展示加载组件前的延迟时间,默认为 200ms
  delay: 1000,
  timeout: 3000
});
components: {
    materialSelect: AsyncComp
    }

封装版本

封装异步组件方法:

createAsyncComponent.js 文件

import { defineAsyncComponent } from 'vue';
import { Spin } from 'ant-design-vue';

/**
 * 异步组件加载器
 * @param loader
 * @param options
 * @returns
 */
export function createAsyncComponent(loader, options = {}) {
  const { delay = 100, timeout = 30000, loading = false } = options;
  return defineAsyncComponent({
    loader,
    loadingComponent: loading ? Spin : undefined,
    timeout,
    delay
  });
}

页面上使用:

import { createAsyncComponent } from '@/utils/createAsyncComponent';
components: {
 materialSelect: createAsyncComponent(() => import('@/views/content/components/materialSelect')),
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值