Vue升级带来的elementui冲突警告:Invalid prop: custom validator check failed for prop “type“.的解决方案

 更新时间:2025年04月08日 11:10:36   作者:watermelo37  
在页面渲染的时候,控制台弹出大量警告,严重影响控制台的信息获取功能,但是页面基本能正常显示,这是因为Vue升级带来的elementui冲突警告: Invalid prop: custom validator check failed for prop “type“.的解决方案,本文给大家介绍了详细的解决方案

一、错误情景描述

1、报错情景和信息

在页面渲染的时候,控制台弹出大量警告,严重影响控制台的信息获取功能,但是页面基本能正常显示。

警告内容有两种:

①:

Invalid prop: custom validator check failed for prop "type". 

②:

Invalid prop: validation failed for prop "type". Expected one of ["success", "info", "warning", "danger", ""], got value "primary". 

2、解决方案

直面问题,这个警告就是说类型验证失败,类型应该是"success", "info", "warning", "danger", ""的其中之一,但是实际获取的类型是“primary”。

再加上警告第三行说明了是tag标签的type不对,更有助于定位错误位置。

那就找到对应的位置,将tag类型修改为上述五种之一即可。

            <el-form-item label="Status: ">
              <el-tag
                :type="
                  getStatus(instance.status) == 'initialized' ||
                  getStatus(instance.status) == 'started'
                    ? ''
                    : getStatus(instance.status)
                "
                disable-transitions
              >
                {{ getStatus(instance.status) }}
              </el-tag>
            </el-form-item>

二、深度思考——为什么会警告?为什么页面能显示? 

首先,我是在当前项目中整合了以前写的内容,原则上不应该会有错误或警告,为什么会出现警告呢?

其次,如果我的type类型是错误的,按照elementui的习惯,要么直接报错崩溃,要么按照默认类型显示,但是实际显示是蓝色tag,熟悉elementui的人都知道,蓝色样式一般就是对应的primary的类型,难道说明我设置的type=“primary”生效了,那为什么又会发出警告呢?

三、vue与elementui在不同版本下的细微变化

产生上述疑问后,我突然意识到一个问题,我当前的项目是基于Vue3+Vite开发的,之前的项目是基于Vue2+Webpack开发的,Vue3匹配的框架库是elementui plus,Vue2匹配的框架库是elementui。可能是elementui与elementui plus之间有细微的改动?

查阅elementui官网文档,发现:elementui中tag的type有五种:"success", "info", "warning", "danger", "",默认/缺省值为蓝色tag。

再查阅一下elementui plus的官方文档,发现已经不存在“”这个类型了,而是直接变成了“primary”。tag的type有:"success", "info", "warning", "danger", "primary",并且能通过color值自定义背景颜色。

到这里就破案了,elementui存在两个tag的type版本,旧版本中空值和新版中的“primary”效果一致,所以这里出现了一个警告。tpye的值只要不是"success", "info", "warning", "danger", ""这五者之一,就会变成默认的蓝色tag,“primary”并没有生效,这只是一个巧合,开始验证,我将type的值改为“123”(确定是一个毫无意义的值):

            <el-form-item label="Status: ">
              <el-tag
                :type="
                  getStatus(instance?.status) == 'initialized' ||
                  getStatus(instance?.status) == 'started'
                    ? '123'
                    : getStatus(instance?.status)
                "
                disable-transitions
              >
                {{ getStatus(instance?.status) }}
              </el-tag>
            </el-form-item>

页面依然显示为蓝色的tag,并且报错一样。验证与猜想一致。

四、仍然存在的一个疑问

我确定我引入的是elementui plus,我这个项目根本就没有引入elementui,而且Vue3项目中通过defineCompatSource等方式引入Vue2的组件,但这种兼容性是通过桥接实现的,最后的内核依然是基于Vue3,运行环境也是基于Vue3的。

不管是从运行环境和内核的角度(Vue3环境适配elementui plus),还是从我项目中引入模块的角度(仅仅只引入了elementui plus),都不应该是Vue2要求的"success", "info", "warning", "danger", ""五选一,而应该是Vue3中的规范,"success", "info", "warning", "danger", "primary"五选一。

也就是说虽然我找到了解决警告的方法和出现警告的原因,但其实刨根问底根本就不应该出现这个警告。

这个问题以我现在的学识无法解决,庆幸的是我弄清楚了这个问题的表层和中层原因,已经非常足够了。

不如大胆一点,我认为这是编译器/编译环境、Vite或者Vue官方三者中某一方出现bug,这个可能性是存在的。

五、总结

一次性解决两种bug:Invalid prop: custom validator check failed for prop "type". Invalid prop: validation failed for prop "type". Expected one of ["success", "info", "warning", "danger", ""], got value "primary". 

关键不是解决了bug,是知道bug的出现原因,以及有更加深层的思考。思考是bug带来的最好的礼物。

以上就是Vue升级带来的elementui冲突警告: Invalid prop: custom validator check failed for prop “type“.的解决方案的详细内容,更多关于Vue升级导致elementui冲突警告的资料请关注脚本之家其它相关文章!

相关文章

  • Vue.use()在new Vue() 之前使用的原因浅析

    Vue.use()在new Vue() 之前使用的原因浅析

    本文通过实例代码给大家介绍了为什么Vue.use()在new Vue() 之前使用,需要的朋友可以参考下
    2019-08-08
  • vue3上传文件、图片、视频组件实例代码

    vue3上传文件、图片、视频组件实例代码

    文件上传是一个老生常谈的话题了,这篇文章主要介绍了vue3上传文件、图片、视频组件的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-05-05
  • 基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)

    基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)

    为了快速体验 MVVM 模式,我选择了非工程化方式来起步,并选择使用 Vue.js,以及基于它构建的 iView UI 框架。本文给大家分享基于 Vue.js 之 iView UI 框架非工程化实践记录,需要的朋友参考下吧
    2017-11-11
  • vue实现登录滑动拼图验证

    vue实现登录滑动拼图验证

    这篇文章主要为大家详细介绍了vue实现登录滑动拼图验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作

    全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作

    这篇文章主要介绍了全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue3中keep-alive和vue-router的结合使用方式

    vue3中keep-alive和vue-router的结合使用方式

    这篇文章主要介绍了vue3中keep-alive和vue-router的结合使用方式, 具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 使用element+vuedraggable实现图片上传拖拽排序

    使用element+vuedraggable实现图片上传拖拽排序

    这篇文章主要为大家详细介绍了使用element+vuedraggable实现图片上传拖拽排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue前端开发规范整理(推荐)

    Vue前端开发规范整理(推荐)

    本文是基于vue官方风格指南整理的关于Vue前端开发规范(推荐),非常不错,具有参考借鉴借鉴价值,需要的朋友可以参考下
    2018-04-04
  • 从0到1构建vueSSR项目之路由的构建

    从0到1构建vueSSR项目之路由的构建

    这篇文章主要介绍了从0到1构建vueSSR项目之路由的构建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 在Vue3中使用CodeMirror插件的方法详解

    在Vue3中使用CodeMirror插件的方法详解

    CodeMirror是一个功能强大的Web代码编辑器,广泛应用于各种Web应用中,在Vue3项目中集成CodeMirror,可以显著提升代码编辑和展示的用户体验,本文将结合实际案例,详细介绍在Vue3中使用CodeMirror插件的方法,需要的朋友可以参考下
    2024-12-12

最新评论