Formily 如何进行表单验证

🤍 前端开发工程师、技术日更博主、已过CET6

🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1

🕠 牛客 高级专题作者、打造专栏《前端面试必备》《2024面试高频手撕题》

🍚 蓝桥云课 签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》《带你从入门到实战全面掌握 uni-app》

文章目录

    • [1. 定义验证规则](#1. 定义验证规则)
    • [2. 执行验证](#2. 执行验证)
    • [3. 自定义验证规则](#3. 自定义验证规则)
    • [4. 总结](#4. 总结)

Formily 是一个基于 JSON Schema 的表单配置化方案,它可以帮助开发者快速构建和管理表单。Formily 提供了强大的表单验证功能,使得开发者可以轻松地定义和执行验证规则。本文将详细介绍 Formily 是如何进行表单验证的。

1. 定义验证规则

在 Formily 中,我们可以通过在 JSON Schema 中定义验证规则来进行表单验证。Formily 支持多种验证规则,如必填、最小长度、最大长度、正则表达式等。

以下是一个简单的示例,定义了一个用户名和密码的表单,并添加了相应的验证规则:

json 复制代码
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "title": "用户名",
      "x-decorator": "FormItem",
      "x-component": "Input",
      "required": true,
      "minLength": 3,
      "maxLength": 15
    },
    "password": {
      "type": "string",
      "title": "密码",
      "x-decorator": "FormItem",
      "x-component": "Input",
      "x-component-props": {
        "type": "password"
      },
      "required": true,
      "minLength": 6
    }
  }
}

在这个示例中,我们定义了两个字段:usernamepassword。对于 username 字段,我们设置了 requiredminLengthmaxLength 验证规则。对于 password 字段,我们设置了 requiredminLength 验证规则。

2. 执行验证

在 Formily 中,我们可以通过调用 form.validate() 方法来执行表单验证。form.validate() 方法会根据 JSON Schema 中定义的验证规则对表单进行验证,并返回验证结果。

以下是一个简单的示例,展示了如何执行表单验证:

javascript 复制代码
import React from 'react';
import { createForm } from '@formily/core';
import { FormProvider, Field, Submit } from '@formily/react';

const form = createForm();

const schema = {
  // JSON Schema 定义
};

function App() {
  const handleSubmit = async () => {
    const isValid = await form.validate();
    if (isValid) {
      console.log('表单验证通过');
    } else {
      console.log('表单验证失败');
    }
  };

  return (
    <FormProvider form={form}>
      <Field schema={schema} />
      <Submit onClick={handleSubmit}>提交</Submit>
    </FormProvider>
  );
}

export default App;

在这个示例中,我们首先创建了一个 Formily 表单实例,然后定义了一个 JSON Schema。然后,我们使用 FormProviderField 组件来渲染表单。最后,我们定义了一个 handleSubmit 函数,该函数会在用户点击提交按钮时执行表单验证。

3. 自定义验证规则

除了内置的验证规则外,Formily 还允许我们定义自定义的验证规则。我们可以通过在 JSON Schema 中使用 x-validator 属性来定义自定义的验证规则。

以下是一个简单的示例,定义了一个自定义的验证规则:

json 复制代码
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "title": "用户名",
      "x-decorator": "FormItem",
      "x-component": "Input",
      "required": true,
      "minLength": 3,
      "maxLength": 15,
      "x-validator": {
        "name": "customValidator",
        "message": "用户名必须是字母或数字"
      }
    }
  }
}

在这个示例中,我们定义了一个名为 customValidator 的自定义验证规则。customValidator 验证规则会检查用户名是否是字母或数字。

4. 总结

Formily 提供了强大的表单验证功能,使得开发者可以轻松地定义和执行验证规则。通过使用 Formily,开发者可以大大简化表单的开发过程,提高表单的可维护性,支持多种表单控件,支持表单验证。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言讨论。

相关推荐
阿珊和她的猫2 天前
Manus:通用智能体的架构革命与产业破局
架构·状态模式
Antonio9153 天前
【Q&A】QT有哪些状态模式的设计?
qt·ui·状态模式
阿珊和她的猫3 天前
DeepSeek R1与V3:混合架构下的推理革命与效率破局
架构·状态模式
Java&Develop3 天前
Spring Boot添加全局异常处理器捕捉异常 跳转登录页面
spring boot·后端·状态模式
m0_555762906 天前
状态模式(State Pattern)
状态模式
Niuguangshuo6 天前
Python 状态模式
python·ui·状态模式
猿来&如此7 天前
【gradio】从零搭建知识库问答系统-Gradio+Ollama+Qwen2.5实现全流程
前端·python·系统架构·状态模式·gradio
好似是故人7 天前
VO、DTO、POJO、PO和DO 的区别
java·spring·状态模式
Hanson Huang7 天前
23种设计模式-状态(State)设计模式
java·设计模式·状态模式·行为型设计模式
丁总学Java7 天前
“11.9元“引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 ✨
spring boot·后端·状态模式