React formik 表单验证:如何最初禁用提交按钮

reactjs

1个回答

写回答

麦兜仔

2025-06-25 00:25

+ 关注

JS
JS

React Formik是一个用于构建表单的强大工具,它提供了许多方便的功能来简化表单验证的过程。在使用Formik时,有时我们希望在表单验证通过之前禁用提交按钮,以防止用户在表单未填写完整或未通过验证时提交数据。本文将介绍如何在React Formik中最初禁用提交按钮,并提供一个实际案例代码。

在React Formik中,我们可以通过设置一个名为isSubmitting的属性来控制提交按钮的禁用状态。默认情况下,isSubmitting属性的值为false,即提交按钮处于可点击状态。当我们调用Formik提供的handleSubmit函数来处理表单提交时,isSubmitting属性的值会自动设置为true,此时提交按钮会被禁用。当表单验证完成后,我们可以通过设置isSubmitting属性的值为false来启用提交按钮。

下面是一个简单的例子,展示了如何在React Formik中最初禁用提交按钮:

JSx

import React from 'react';

import { Formik, Form, Field, ErrorMessage } from 'formik';

const initialValues = {

name: '',

emAIl: '',

password: '',

};

const validationSchema = {

name: Yup.string().required('请输入姓名'),

emAIl: Yup.string().emAIl('请输入有效的电子邮件地址').required('请输入电子邮件地址'),

password: Yup.string().min(6, '密码长度至少为6个字符').required('请输入密码'),

};

const onSubmit = (values, { setSubmitting }) => {

setTimeout(() => {

alert(JSON.stringify(values, null, 2));

setSubmitting(false);

}, 400);

};

const App = () => (

<div>

<h1>表单验证示例</h1>

<Formik</p> initialValues={initialValues}

validationSchema={validationSchema}

onSubmit={onSubmit}

>

{({ isSubmitting }) => (

<Form>

<div>

<label htmlFor="name">姓名:</label>

<Field type="text" id="name" name="name" />

<ErrorMessage name="name" component="div" />

</div>

<div>

<label htmlFor="emAIl">电子邮件地址:</label>

<Field type="emAIl" id="emAIl" name="emAIl" />

<ErrorMessage name="emAIl" component="div" />

</div>

<div>

<label htmlFor="password">密码:</label>

<Field type="password" id="password" name="password" />

<ErrorMessage name="password" component="div" />

</div>

<button type="submit" disabled={isSubmitting}>

{isSubmitting ? '提交中...' : '提交'}

</button>

</Form>

)}

</Formik>

</div>

);

export default App;

在上面的例子中,我们首先定义了表单的初始值initialValues,然后通过Yup库定义了表单的验证规则validationSchema。接下来,我们定义了表单提交的处理函数onSubmit,其中通过setSubmitting函数将isSubmitting属性的值设置为false,以便启用提交按钮。

在Formik组件中,我们通过传递initialValues、validationSchema和onSubmit属性来配置表单。在Form组件中,我们使用Field组件来渲染表单字段,并使用ErrorMessage组件来渲染错误消息。最后,我们在button元素中使用isSubmitting属性来控制提交按钮的禁用状态。

通过上述代码,我们可以实现在React Formik中最初禁用提交按钮的效果。在用户填写完整且通过验证的表单后,提交按钮将自动启用,允许用户提交数据。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号