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,开发者可以大大简化表单的开发过程,提高表单的可维护性,支持多种表单控件,支持表单验证。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言讨论。

相关推荐
Cuit小唐1 天前
C++ 状态模式详解
开发语言·c++·状态模式
周努力.3 天前
设计模式之状态模式
设计模式·状态模式
阑梦清川5 天前
计算机体系架构-----设计模式:状态模式(从程序员加班问题切入)
设计模式·架构·状态模式
智想天开5 天前
16.状态模式:思考与解读
设计模式·状态模式
Code哈哈笑6 天前
【图书管理系统】详细讲解用户登录:后端代码实现及讲解、前端代码讲解
前端·spring boot·后端·spring·状态模式
文件夹__iOS7 天前
状态模式 VS 策略模式
状态模式·策略模式
常某某的好奇心7 天前
状态模式(State Pattern)
状态模式
magic 2458 天前
深入理解 Spring MVC:DispatcherServlet 与视图解析机制
java·servlet·状态模式·springmvc
碎梦归途12 天前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式
茂桑13 天前
日常开发小Tips:后端返回带颜色的字段给前端
java·状态模式