element-plus 自动导入 使用 v-loading 无法找到样式 element-plus/es/components/loading-directive/style/css 问题解决

查找解决方法及当前使用版本

当前版本
"element-plus": "^2.0.2",


"unplugin-auto-import": "^0.6.1",
"unplugin-vue-components": "^0.17.20"
查找解决方法
  1. 先去GitHub 查 element-plus/issues/4855
    发现里面的解决方式还不是很好,结合vs-code 查看 ElementPlusResolver 函数的源码声明 发现有exclude 属性
    在这里插入图片描述
    在这里插入图片描述

解决方法

使用正则表达式 排除loading-directive的样式 exclude: new RegExp(/^(?!.*loading-directive).*$/)

chainWebpack: (config) => {
    config.resolve.alias
      .set('@', path.resolve(__dirname, 'src'))
      .set('components', '@/components')
    // config
    //   .plugin('AutoImport')
    //   .use(AutoImport({ resolvers: [ElementPlusResolver()] }))
    // config
    //   .plugin('Components')
    //   .use(Components({ resolvers: [ElementPlusResolver()] }))
    config.plugin('AutoImport').use(
      AutoImport({
        imports: ['vue'],
        resolvers: [
          ElementPlusResolver({
            importStyle: 'css',
            exclude: new RegExp(/^(?!.*loading-directive).*$/)
          })
        ],
        dts: 'auto-imports.d.ts'
      })
    )
    config.plugin('Components').use(
      Components({
        resolvers: [ElementPlusResolver({ importStyle: 'css' })],
        dts: 'components.d.ts'
      })
    )
  }

结果

<div class="w-full h-full flex flex-col" v-loading="pageLoading"></div>

 const nameIdWatchEffect = watch(
      () => props?.name_id,
      () => {
        console.log('进入了')
        if (props?.name_id) {
          pageLoading.value = !pageLoading.value
          setTimeout(() => {
            pageLoading.value = false
          }, 300)
        }
      }
    )

请添加图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值