@crystaldelta/simple-react-validator

中文文档
1.6.0发布于 2021/03/19MITTypeScriptCommonJS零依赖近 30 天下载 9601

由Laravel验证所启发的简单反应形式验证器.

中文使用文档

简单反应验证器

由Laravel验证所激发的简单反应和反应本土形式验证器.

对国家预防机制的看法

Powered by Dockwa

关于

简单的反作用验证器就是它的声音。 我们想建立一个验证器 来进行配置最小并且自然使用的反应。 它的配置和用法类似于Laravel PHP框架,使验证像一行一样容易.

工作示例

文档

  1. 使用量
  2. 设置
    1. 公共方法
    2. 布莱尔
    3. 有条件的字段
    4. 反应 SFC 和 Hooks
    5. 原生反应
  3. 规则
  4. 选项
    1. 元素
    2. 类名
    3. 信件
    4. 验证器
    5. 自动强制更新
    6. 本地化
  5. 自定义验证器

使用量

打开 example/index.html 文件用于更多使用库实例或检查 示例

无

npm install simple-react-validator --save

箭头

bower install simple-react-validator --save

3 简单步骤

  1. 导入并初始化验证符 .
import SimpleReactValidator from 'simple-react-validator';

编号5

componentWillMount: function() {
  this.validator = new SimpleReactValidator();
},

代码6

constructor() {
  this.validator = new SimpleReactValidator();
}
  1. 在输入下添加验证规则 。 这个 message 方法接受5个参数:
  • 字段名称:一个独特的下划线字符串,在消息中被替换为字段的名称.
  • 数值:通常为当前字段的状态.
  • 规则字符串: 用于字符串的管道分隔规则列表.
  • 选项( 可选): 选项对象与 默认选项。 。 。 .
this.validator.message('title', this.state.title, 'required|email')

示例

render() {
  return (
    <div className="container">
      <h1>Write a Review</h1>
      <div className="form-group">
        <label>Title</label>
        <input className="form-control" value={this.state.title} onChange={this.setTitle} />

        {/**********   This is where the magic happens     ***********/}
        {this.validator.message('title', this.state.title, 'required|alpha')}

      </div>
      <div className="form-group">
        <label>Email</label>
        <input className="form-control" value={this.state.email} onChange={this.setEmail} />

        {/**********   This is where the magic happens     ***********/}
        {this.validator.message('email', this.state.email, 'required|email', { className: 'text-danger' })}

      </div>
      <div className="form-group">
        <label>Review</label>
        <textarea className="form-control" value={this.state.review} onChange={this.setReview} />

        {/**********   This is where the magic happens     ***********/}
        {this.validator.message('review', this.state.review, 'required|min:20|max:120')}

      </div>
      <button className="btn btn-primary" onClick={this.submitForm}>Save Review</button>
    </div>
  );
}
  1. 检查提交时验证是否通过, 如果失败则打开信件 。 一旦消息被打开,验证消息会随着用户类型而改变并更新.
submitForm() {
  if (this.validator.allValid()) {
    alert('You submitted the form and stuff!');
  } else {
    this.validator.showMessages();
    // rerender to show messages for the first time
    // you can use the autoForceUpdate option to do this automatically`
    this.forceUpdate();
  }
}

有另一种方法可以用来检查单个字段是否有效.

if (this.validator.fieldValid('email')) {
  // booya this field is valid!
}

注:自动更新日期

从v1.1.0起,您可以用 autoForceUpdate 选项,然后通过它的反应实例 对国家负责。 这将自动调用 this.forceUpdate() 当你 showMessages, (中文(简体) ), hideMessages, (中文(简体) ), showMessageFor,以及 hideMessageFor 被调用.

constructor() {
  this.validator = new SimpleReactValidator({autoForceUpdate: this});
}


1. 可用的公共方法

getErrorMessages() 返回 JS 对象, 键为字段名, 值为错误消息 .

showMessages() 打开显示所有信件的信件 .

hideMessages() 关闭显示所有信件的信件 .

showMessageFor(field) 打开显示特定字段的信息。 用于 布莱尔。 。 。 .

hideMessageFor(field) 关闭显示特定字段的信息。 用于 布莱尔。 。 。 .

allValid() 如果所有字段都通过验证或不通过, 返回布尔值 .

fieldValid(field) 检查单个字段是否有效 .

purgeFields() 启用验证对象 条件字段.

messageWhenPresent(message, options = {}) 设置信件时显示信件, 有利于 ajax 验证错误 .

check(value, validations) 一种简单的方式来对照验证规则中构建的值来检查值. 不添加验证符, 只是给出一个真实/ 假返回值 .

message(field, value, validations, options = {}) 如何定义验证规则,并在表格中添加消息.

2. 关于Blur

您可以在输入模糊后使用Blur动作上的反应来显示单个字段. 使用 showMesssageFor 或者说 hideMessageFor 方法。 。 .

<div>
  <label>Email</label>
  <input value={this.state.email} onChange={/* update email */} onBlur={() => this.validator.showMessageFor('email')} />
  {this.validator.message('email', this.state.email, 'required|email')}
</div>

3. 有条件的领域

通过上面添加一个字段到验证符中 message 方法。 但有时要随着表单的完成有条件地添加并去除验证. 这个你可以用 purgeFields 在每次渲染之前清除所有验证符的方法,因此只有在该渲染过程中添加的字段才被验证.

render() {
  this.validator.purgeFields();
  return (
    <div>
      <div className="form-group">
        <label>Address Line 1</label>
        <input className="form-control" value={this.state.title} onChange={this.setTitle} />
        {this.validator.message('title', this.state.title, 'required|alpha')}
      </div>
      {this.optinallyAddAnotherAddressLine()}
      <button className="btn btn-primary" onClick={this.submitForm}>Save Review</button>
    </div>
  );
}

4. 反应钩

SimpleReactValidator是一个类,但如果在无国籍的React组件中即时切入一个类,它将在每次渲染时都这样做(关闭可能添加的任何消息信息).

使用参考文献: 指示反应将简单反应变异器作为单通处理 :

const simpleValidator = useRef(new SimpleReactValidator())

<Input
  name="name"
  value={companyInformation.name}
  onChange={handleInputChange}
  onBlur={()=>simpleValidator.current.showMessageFor('name')} />
{simpleValidator.current.message('name', companyInformation.name, 'required')}

详情见 问题:97

5. 土著反应

您需要用 <Text> 元素.

<Text>
  {this.validator.message('title', this.state.title, 'required|alpha')}
</Text>

规则

这是您可以校验格式输入的所有规则列表 。 当使用多个规则时,用管子将它们分开 |。在添加选项时,在规则中附加一个冒号,并用逗号分隔选项。 实例: 'required|min:20|max:120' 财务报告和审定财务报表 'required|in:stu,stuart,stuyam'您可以通过一个阵列来应用规则 ['required', {max: 20}, {min: 120}] 或者说 ['required', {in: ['stu', 'stuyam']}]。这对于像正则验证器这样的东西是必需的,在正则中您可能使用管道或逗号,并且会与规则字符串相冲突.

已接受

必须是 Java 脚本 真实,适合所需的复选框.

日期之后

一定是约会过后 见 日期 用于提供已接受日期值的信息.

等:日期之后

必须是在之后或日期。 见 日期 用于提供已接受日期值的信息.

阿尔法

只能用集装箱字母.

α- 空间

只能使用容器的字母和空格 .

α num

只能是容器的字母和号码.

α num 空间

只能使用容器的字母、数字和空格.

α num dash

只能是容器的字母、数字、破折号和下划线.

α num dash 空间

只能是容器的字母、数字、破折号、下划线和空格.

数组

必须是 JavaScript 矩阵 .

日期:

一定在约会之前 见 日期 用于提供已接受日期值的信息.

前为平:日期

必须是在日期之前或日期。 见 日期 用于提供已接受日期值的信息.

介于: min, max, 类型( 可选)

必须在两个值之间。 见 大小 用于提供如何计算大小和如何使用选项的信息.

布尔

必须是 JavaScript Boolean .

纸牌表达式

必须是有效的信用卡到期日。 例10/18或10/2018 (韩语)

纸牌( num)

一定是有效的信用卡号码 Ex. 4242424242或4242 4242 4242 4242

货币

一定是有效货币 美元符号和逗号是可选的 。 前4.25、3 000或3 245 525.12美元

日期

必须是日期类型 时间 约会. 需要时间

日期( e): 日期

一定是特定日期的约会.
选项 : 日期必须是时间对象.

电子邮件

必须是有效的电子邮件格式 .

在: foo, bar, 中, 中, 中.

必须匹配选项中的字符串 .
选项 : 它必须匹配的数值列表.

整数

必须是整数 .

最大:大小,类型(可选)

一定不会超过最大。 见 大小 用于提供如何计算大小和如何使用选项的信息.

分:大小,类型(可选)

一定不会小于分钟。 见 大小 用于提供如何计算大小和如何使用选项的信息.

不是在: foo, bar, , , , ,...

在选项中不能匹配字符串 .
选项 : 列出它不能匹配的值.

非正则: pattern

一定不匹配正则名词 .
选项 : 瑞克丝一定不匹配.
说明: 如果您的 regex 使用 qq 或 , 或其他特殊字符使用数组语法定义规则 .

数字

一定是任意类型的数字.
正数 : “ 数值 : 0. 0 ”
负数“ 数值 : 0. 0 ”

电话

必须是有效的电话号码格式 。 前(508年) 555-1234或5085551234

regex: 扩展

一定跟Regex一样.
选项 : 雷克克斯必须匹配.
说明: 如果您的 regex 使用 qq 或 , 或其他特殊字符使用数组语法定义规则 .

所需经费

必须在场,与其他验证人一起使用才能要求它们.

大小:大小,类型(可选)

一定有特别的尺寸 可以是字符串长度,数组长度,也可以是数字.
选项 : 类型是可选的,默认为 string。有3个“字符串”、“数字”和“阵列”。 字符串为字符串长度,num为数字大小,数组为数组长度.

字符串

必须是类型字符串.

类型: 类型

必须是选项中指定的 JavaScript 类型 .
选项 : 比较给出的数值类型与所提供的类型。 使用数组语法来定义其它类型,它永远是类型字符串.

url 密码

必须是有效的url。 ex. (英语). https://dockwa.com (中文(简体) ) 或 ditchwa.com (中文(简体) )

选项

简单反应验证器在初始化时可以接收选项对象,或者在定义验证器时作为第四个参数. 你可以提供四个选项.

1. 要件:

接受一个块,您可以返回要从验证器信件中将信件包裹的默认元素。 默认元素是 <div className="srv-validation-message">{message}</div>。如果您正在使用 React Introduction ,默认将只是返回的信息。 您也可以设置 element: false 仅仅返回一个消息.

  • 需要2个参数
  • 消息: 来自验证器的消息 .
  • 类Name (可选) : 将可选择提供, 这样您可以在每次验证的基础上更改类名 .
this.validator = new SimpleReactValidator({
  element: message => <div>{message}</div>
  // OR
  element: (message, className) => <div className={className}>{message}</div>
})

2. 类Name

要传递到元素的类的字符串, 默认为 srv-validation-message 并且可以被覆盖.

3. 信息:

接受一个对象来覆盖验证信件。 它还接受一个会覆盖所有信件的默认值 .

this.validator = new SimpleReactValidator({
  messages: {
    email: 'That is not an email.'
    // OR
    default: 'Validation has failed!'  // will override all messages
  },
})

4. 验证者:

接受自定义验证对象。 见 自定义验证器 关于定义自定义验证符的更多信息.

5. 自动更新日期:

接受一个反应实例,并在信件被自动显示和隐藏时自动调用. 更多关于自动更新的日期

6. 地点:

接受带有您选择的本地化消息的字符串. 要做到这一点,正确的语言文件也需要被加载到您的前端. 当前支持的语言帮助翻译项目用途 此文件作为模板.

// sets french default validation messages.
this.validator = new SimpleReactValidator({locale: 'fr'});

您可以应用自定义信件 信件 选项。 然而,您也可以应用一种自定义语言,供您以后随 addLocale 类法.

SimpleReactValidator.addLocale('klingon', {
  accepted: 'Hab SoSlI’ Quch!',
  email: 'Heghlu’meH QaQ jajvam'
});
...
this.validator = new SimpleReactValidator({locale: 'klingon'});

自定义验证器

你可以写自定义规则,以便使用验证. 一条规则有四个选项:

  1. 消息: 当验证失败时, 将会显示消息 。 :属性将被替换为 人性化 名称为您提供的您正在验证的属性( 支持 snake case 或 cameasCase) .
  2. 规则:接受一个块,如果验证器通过,则返回真实,如果失败,则输入错误.
  • 需要3个参数
  • val: 正在验证的值 .
  • 段落 : 包含参数的数组传递到验证器中 .
  • 验证符 : 校验对象, 允许您访问诸如 validator.helpers.textRegex(val, regex) 它返回真实或虚假,如果regex通过.
  1. 信件重置( 可选) : 接受块用于修改并返回苍蝇上的信件 .
  • 需要2个参数
  • 电文:以上电文.
  • 段落 : 包含参数的数组传递到验证器中 .
  1. 需要( 可选) : 如果您想要在应用时隐含对验证符的要求, 则为真 。 默认情况下不要求所有验证符 。 相当于添加 required 每个验证定义.

示例

constructor() {
  this.validator = new SimpleReactValidator({
    validators: {
      ip: {  // name the rule
        message: 'The :attribute must be a valid IP address and must be :values.',
        rule: (val, params, validator) => {
          return validator.helpers.testRegex(val,/^(?!0)(?!.*\.$)((1?\d?\d|25[0-5]|2[0-4]\d)(\.|$)){4}$/i) && params.indexOf(val) === -1
        },
        messageReplace: (message, params) => message.replace(':values', this.helpers.toSentence(params)),  // optional
        required: true  // optional
      }
    }
  });
}

用法 :

render: function() {
  return (
    <div className="container">
      <h1>Give Me Your IP</h1>
      <div className="form-group">
        <label>IP Address</label>
        <input className="form-control" value={this.state.ip} onChange={this.setIP} />
        {this.validator.message('ipAddress', this.state.ip, 'required|ip:127.0.0.1')}
      </div>
      ...
    </div>
  );
},

版本与发布记录

@crystaldelta/simple-react-validator 共发布 1 个版本,首次发布于 2021/03/19;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.6.0latest2021/03/195 年前

关于 @crystaldelta/simple-react-validator 的常见问题

@crystaldelta/simple-react-validator 是什么?

由Laravel验证所启发的简单反应形式验证器.

如何安装 @crystaldelta/simple-react-validator?

在项目目录运行 npm install @crystaldelta/simple-react-validator,或使用 pnpm add / yarn add / bun add。

@crystaldelta/simple-react-validator 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crystaldelta/simple-react-validator 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@crystaldelta/simple-react-validator 可以商用吗?

@crystaldelta/simple-react-validator 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crystaldelta/simple-react-validator 的下载量有多少?

根据 npm 官方下载统计,@crystaldelta/simple-react-validator 在 2026/10/11 – 2026/11/09 这 30 天内被下载 9,601 次,日均约 320 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crystaldelta/simple-react-validator 还在维护吗?

最新版本 1.6.0 发布于 2021/03/19(5 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/03/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。