欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 使用 Vue 3 + Tiny UI 实现动态表单项及自动校验功能

使用 Vue 3 + Tiny UI 实现动态表单项及自动校验功能

2025/6/24 9:48:45 来源:https://blog.csdn.net/qq_35946021/article/details/148849047  浏览:    关键词:使用 Vue 3 + Tiny UI 实现动态表单项及自动校验功能

一、前言

最近在开发一个质量管理模块时,遇到了一个需求:需要实现一个可以动态添加多个问题条目的表单,并对每一项进行必填校验。最终我选择使用 Vue 3 和 @opentiny/vue 组件库来实现该功能,本文将详细分享我的实现过程。

二、技术选型

  • Vue 3:基于 Composition API 的响应式系统,使代码更简洁易维护。
  • Tiny UI(@opentiny/vue):阿里开源的组件库,提供了丰富的 UI 组件,如 FormInputNumericButton 等。
  • 动态校验机制:通过 watchEffect 监听数据变化,自动生成对应的校验规则。

三、页面结构与核心代码解析

1. 模板部分 (template)

<template><div class="demo"><tiny-form ref="modalFormRef" :model="checkItems" :rules="formRules" label-width="120px" validate-type="text"><div v-for="(item, index) in checkItems" :key="item.id"><tiny-form-item :prop="`${index}.problemDes`" label="问题描述"><tiny-input v-model="item.problemDes" /></tiny-form-item><tiny-form-item :prop="`${index}.faultQty`" label="不良数"><tiny-numeric v-model="item.faultQty" :precision="0" min="1" max="9999999"></tiny-numeric></tiny-form-item></div><tiny-button type="primary" @click="submitForm">确 定</tiny-button></tiny-form></div>
</template>

说明

  • 使用 v-for 遍历 checkItems 动态生成表单项;
  • :prop 设置为 ${index}.字段名,支持嵌套对象路径校验;
  • 使用 tiny-form 提供的 validate 方法进行整体校验。

2. 脚本部分 (script setup)

<script setup>
import { ref, watchEffect } from 'vue';const modalFormRef = ref();// 表格数据源
const checkItems = ref([{ id: 1, problemDes: '' },{ id: 2, problemDes: '' },{ id: 3, problemDes: '' },{ id: 4, problemDes: '' },
]);// 表单校验规则
const formRules = ref({});// 动态生成每项的校验规则
watchEffect(() => {const rules = {};checkItems.value.forEach((_, index) => {rules[`${index}.problemDes`] = [{ required: true, message: '问题描述不能为空', trigger: 'blur' },];rules[`${index}.faultQty`] = [{ required: true, message: '不良数不能为空', trigger: 'blur' },];});formRules.value = rules;
});// 提交表单
const submitForm = () => {modalFormRef.value.validate(valid => {if (valid) {console.log('校验通过,提交数据:', checkItems.value);} else {console.log('校验失败');return false;}});
};
</script>

说明

  • 使用 ref 创建响应式数据;
  • 使用 watchEffect 自动监听 checkItems 变化,动态生成校验规则;
  • 使用 validate 方法触发整体表单校验。

四、功能亮点

特性描述
动态表单项支持任意数量的问题条目,便于扩展
动态校验规则使用 watchEffect 实现规则自动更新,无需手动维护
嵌套对象路径校验使用 ${index}.字段名 格式绑定 prop,支持嵌套对象验证
良好的可读性和维护性基于 Vue 3 Composition API,逻辑清晰、易于维护

五、常见问题与解决方案

问题解决方案
表单项未触发校验确保 prop 正确绑定到嵌套字段路径,如 ${index}.problemDes
表单提交时未触发回调使用 validate 方法传入回调函数,并注意上下文绑定
表单项过多导致性能下降可考虑分页或虚拟滚动优化

六、后续优化方向

  • ✅ 支持动态增删表单项
  • ✅ 异步校验(如调用接口检查数值是否合法)
  • ✅ 多语言支持
  • ✅ 表单数据持久化(localStorage 或后端保存)

七、总结

通过本次实践,我深刻体会到 Vue 3 Composition API 在构建复杂交互场景下的优势,同时也验证了 Tiny UI 组件库在企业级项目中的实用性。希望这篇博客能帮助你在开发类似功能时少走弯路。

如果你也在使用 Vue 3 和 Tiny UI 开发表单功能,欢迎留言交流!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词