antd vue form 手动校验_「React干货」:使用antd模块的Form表单组件快速创建表单「一」...

点击上方关注订阅黑码教主获取更多精彩内容

d82f38a1a71cf75d2623b23fa704f519.png

antd + react

antd的Form组件有什么功能?

具有数据收集、校验和提交功能的表单,包含复选框、单选框、输入框、下拉选择框等元素。

何时使用

  • 用于创建一个实体或收集信息。
  • 需要对输入的数据类型进行校验时。

基础使用

使用Form表单组件的基础外框,如果你使用class方式定义React组件,以下代码是常规使用方式。

import React, { Component } from 'react'import { Form } from 'antd';class HorizontalLoginForm extends Component { ...}const WrappedHorizontalLoginForm = Form.create({ name: 'horizontal_login' })(HorizontalLoginForm);ReactDOM.render(, mountNode);

表单子组件必须包含在Form组件内

render() { const { getFieldDecorator, getFieldsError, getFieldError, isFieldTouched } = this.props.form; 
{getFieldDecorator('username', { rules: [{ required: true, message: 'Please input your username!' }], })( } placeholder="Username" />, )} ... }
5121a8e6bab212df10436a31cf415bf5.png

我们来看下规则创建的注意点

{getFieldDecorator('username', { rules: [{ required: true, message: 'Please input your username!' }], })( } placeholder="Username" />, )}

其中,username为字段名,这相当于表单内元素的name值,在组件中,你只需取username的值就是这个input组件的值,如何取值,方面讲解

antd的form表单核心使用的是rc-form组件来进行数据收集、校验以及提交功能。

暴露的API

  • getFieldDecorator: ƒ ()
  • getFieldError: ƒ (name)
  • getFieldInstance: ƒ ()
  • getFieldProps: ƒ ()
  • getFieldValue: ƒ (name)
  • getFieldsError: ƒ (names)
  • getFieldsValue: ƒ (names)
  • isFieldTouched: ƒ (name)
  • isFieldValidating: ƒ (name)
  • isFieldsTouched: ƒ (ns)
  • isFieldsValidating: ƒ (ns)
  • isSubmitting: ƒ ()
  • resetFields: ƒ ()
  • setFields: ƒ ()
  • setFieldsInitialValue: ƒ (initialValues)
  • setFieldsValue: ƒ ()
  • submit: ƒ ()
  • validateFields: ƒ ()
  • validateFieldsAndScroll: ƒ ()

使用方式例如:

this.props.form.getFieldValue('value1')

因篇幅问题,下篇讲解各使用示例

取值

this.props.form.getFieldValue('value1')或this.props.form.getFieldProps('normal').value

如果你觉得本篇还不错,请点赞关注!

文章由黑码教主创作,仅代表个人观点,配图源于网络版权归原作者所有,如有侵权联系删除!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Antd 2.x 在 Vue 中的表验证和 React 中类似,可以通过 `Form` 组件的 `validateFields` 方法来触发校验校验未通过时,可以通过 `getFieldError` 方法获取错误信息,并将焦点设置到出错的表控件上。以下是示例代码: ``` <template> <a-form :form="form" @submit="handleSubmit"> <a-form-item label="Username" :colon="false" :validateStatus="getFieldError('username') ? 'error' : ''" :help="getFieldError('username')"> <a-input v-decorator="['username', { rules: [{ required: true, message: 'Please input your username!' }] }]" /> </a-form-item> <a-form-item label="Password" :colon="false" :validateStatus="getFieldError('password') ? 'error' : ''" :help="getFieldError('password')"> <a-input-password v-decorator="['password', { rules: [{ required: true, message: 'Please input your password!' }] }]" /> </a-form-item> <a-form-item> <a-button type="primary" @click="handleClick">Submit</a-button> </a-form-item> </a-form> </template> <script> import { FormModel, Input, Button, Alert } from 'ant-design-vue'; import { defineComponent } from 'vue'; export default defineComponent({ components: { 'a-form': FormModel, 'a-form-item': FormModel.Item, 'a-input': Input, 'a-input-password': Input.Password, 'a-button': Button, 'a-alert': Alert, }, data() { return { form: null, }; }, mounted() { this.form = this.$form.createForm(this); }, methods: { handleClick() { this.form.validateFields().catch(() => { const errorFields = this.form.getFieldsError(); const firstErrorField = errorFields.find((item) => item.errors.length); if (firstErrorField) { const control = this.form.getFieldInstance(firstErrorField.name); control.focus(); } }); }, handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { console.log('Received values of form: ', values); } }); }, getFieldError(name) { const fieldError = this.form.getFieldError(name); if (fieldError) { return fieldError[0]; } return ''; }, }, }); </script> ``` 在模板中,我们使用 `getFieldError` 方法获取每个表控件的错误信息,并根据错误信息设置相应的 `validateStatus` 和 `help` 属性。 在方法中,我们首先使用 `this.$form.createForm(this)` 创建一个表实例。然后,我们在 `handleClick` 方法中使用 `form.validateFields()` 方法触发表校验。如果校验未通过,这个方法会返回一个 Promise,我们可以通过 `.catch()` 方法捕获校验错误。 在错误处理中,我们首先使用 `form.getFieldsError()` 方法获取所有的表控件的错误信息。然后,我们使用 `Array.find()` 方法找到第一个存在错误信息的表控件,然后使用 `form.getFieldInstance()` 方法获取这个表控件的实例。最后,我们使用 `control.focus()` 方法将焦点设置到这个表控件上,从而达到跳转到未检验通过的地方的目的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值