Vue 3 中自定义表单组件怎么封装条件组合筛选器

落宇大大_2781

落宇大大_2781

2026-09-26

822人浏览

原创

vue 3条件组合筛选器采用配置驱动设计,通过json配置动态渲染控件,实现状态隔离与类型识别;支持插槽、事件透传、属性继承及折叠展开等扩展能力。

vue 3 中自定义表单组件怎么封装条件组合筛选器

在 Vue 3 中封装条件组合筛选器,核心是「配置驱动 + 类型识别 + 状态隔离」。不写死表单项,而是通过一个结构清晰的 JSON 配置数组,让组件自动渲染 input、select、date-picker、daterange 等不同控件,并统一处理查询、重置、布局、占位与事件回传。

一、定义标准配置结构

每个筛选项用一个对象描述,关键字段必须明确:

  • label:显示标签文字(如“用户名”)
  • prop 或 key:字段唯一标识(用于绑定 v-model 和提交参数)
  • type:控件类型(input / select / date / daterange / cascader 等)
  • value:初始值(支持 undefined 或 null,组件内自动初始化为空字符串/数组/null)
  • options(select/cascader 专用):下拉选项数组,格式为 [{ label: '启用', value: 1 }]
  • span(可选):跨列数(如日期范围常设为 2,避免挤压)
  • placeholder(可选):自定义占位符,未设置时默认用 label

二、组件内部状态与响应逻辑

使用 reactive 创建独立表单数据对象,**不直接绑定父组件传入的原始配置值**,避免污染外部状态:

check-vue-style
check-vue-style

检查 .vue 单文件组件的 CSS 规范问题并给出提示,适用于样式检查、CSS审查和 Vue 页面质量巡检。

下载
  • 遍历配置项,为每个 item.prop 初始化 formData[item.prop] = item.value ?? ''
  • 所有输入均绑定到该内部 formData,保证重置时能一键清空
  • 点击「查询」时,只 emit 当前 formData 对象(已过滤掉空值或 undefined 的字段)
  • 点击「重置」时,重置 formData 到初始快照,不调用父组件的 resetFields

三、动态渲染与布局控制

用 v-for + v-if 匹配 type 渲染对应控件,配合 Flex 布局实现自动换行和右侧按钮对齐:

  • 外层 <el-form inline></el-form> 设 display: flex; flex-wrap: wrap
  • 每个 <el-form-item></el-form-item> 设置 flex: 0 0 calc(25% - 8px)(默认每行 4 项),支持传入 colCount prop 动态调整
  • 「查询」「重置」按钮放在单独的 <el-form-item></el-form-item>,加 margin-left: auto 推至最右
  • 对 daterange 类型,额外加 class 控制宽度为 100%,避免被等分挤压

四、扩展性设计要点

真正复用性强的筛选器,要预留向上穿透能力:

  • 插槽支持:为特定字段提供 #field-{prop} 插槽,可完全自定义 UI(如带搜索的远程 select)
  • 事件透传:通过 eventHandle 对象接收父组件传入的事件处理器(如 change, visible-change)
  • 属性继承:用 v-bind="item.bind || {}" 向子控件透传任意原生属性(如 clearable, disabled, filterable)
  • 更多条件折叠:超出指定行数(如 2 行)时收起,点击「展开更多」下拉展示剩余项(非弹窗,保持表单连续性)

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vue.js vue vue 3

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2123

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4543

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5690

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5138

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

723

5

vue2.0和3.0区别
vue2.0和3.0区别

vue2.0和3.0区别:vue2的响应式原理是利⽤“Object.defineProperty()”对数据进⾏劫持结合发布订阅模式的⽅式来实现,vue3中使⽤了es6的proxy API对数据代理,实现对数据的监控。本专题为大家提供vue2.0和3.0区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

1614

5

vue3的生命周期有哪些
vue3的生命周期有哪些

vue3的生命周期:1、beforecreate;2、created;3、beforemount;4、mounted;5、beforeupdate;6、updated;7、beforedestroy;8、destroyed;9、activated;10、deactivated等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

11702

5

Vue3组合式API与组件开发实战
Vue3组合式API与组件开发实战

本专题讲解 Vue 3 组合式 API 的核心概念与应用技巧,深入分析响应式系统、生命周期管理、组件设计与复用策略。通过完整项目案例,指导前端开发者实现高性能、结构清晰的 Vue 应用,提升开发效率与代码可维护性。

2026.02.10

276

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 16.8万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习