背景

后台系统里最难维护的页面之一,就是大表单:

  • 字段多
  • 联动多
  • 校验规则多
  • 草稿和提交逻辑分叉

如果状态设计不清晰,后期改一个字段就会牵动全局。

实用拆分

  1. 表单值与 UI 状态分离
  2. 同步校验与异步校验分离
  3. 页面状态按分区拆 composable
const formValue = reactive({
  name: '',
  email: '',
  company: '',
})

const uiState = reactive({
  submitting: false,
  dirty: false,
  activeTab: 'basic',
})

防止无效重渲染

  • 大对象不要全量深监听
  • 使用按字段 watch
  • 拆分子组件隔离更新范围
watch(
  [() => formValue.email, () => formValue.company],
  () => {
    validateContactFields()
  }
)

总结

大表单的关键不是“怎么写更快”,而是“怎么改不炸”。

前期做好状态边界,后期迭代成本会低很多。


复杂页面最终拼的是可维护性,不是首版速度。