首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能使用setFieldError或setError将错误设置为formik字段?

为什么我不能使用setFieldError或setError将错误设置为formik字段?
EN

Stack Overflow用户
提问于 2021-12-28 16:44:00
回答 2查看 1.7K关注 0票数 2

我在自己的React中使用formik,如:在构造函数this.myRef = React.createRef();

创建我的表单组件如下所示

代码语言:javascript
运行
复制
<AppForm
    innerRef={this.myRef}
    initialValues={{ currentPassword: '', newPassword: '', confirmPassword: '' }}
    validationSchema={validationSchema}
    onSubmit={() => ''}
    >

    <AppFormField
        heading='Current Password'
        name='currentPassword'
        autoCapitalize='none'
        secureTextEntry={!showCurrentPassword}
        icon={showCurrentPassword ? 'eye' : 'eye-off'}
        onIconClick={() => this.setState({ showCurrentPassword: !showCurrentPassword })}
    />
    
</AppForm>

其中AppForm是我的自定义表单组件,AppFormField是一个自定义组件。

(我使用的是ref bcz,我在表单组件之外使用Save按钮提交表单)

调用句柄提交如下所示的onBtnPress={() => this.handleSubmit()}

最后,我要设置错误的handleSubmit函数。

代码语言:javascript
运行
复制
handleSubmit = async () => {

    this.myRef.current?.submitForm();
    this.myRef.current.setErrors({currentPassword: 'Hello'});
    this.myRef.current.setFieldError('currentPassword', 'Hello'); // I've tried both ways
    console.log('CurrentRef ', this.myRef.current);
}

我尝试过setErrors和setFieldError,并期望formik将错误"Hello“设置为'currentPassword‘字段,但我无法这样做。如果有错误,请告诉我,并告诉我正确的方法。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-16 19:23:51

实际上,问题在于我调用这个方法的方式。setFieldErrorsetErrors都是异步,我在没有等待的情况下调用了它们。

票数 1
EN

Stack Overflow用户

发布于 2021-12-28 16:52:22

A.You需要在Formik组件中添加errors

B.你使用setFieldError调用者setFieldError("currentPassword", "Hello")(信息)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70509983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档