我在React Native应用程序中使用formik,如下所示:在构造函数this.myRef = React.createRef();
中
创建我的表单组件就像这个
<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是我的自定义formik表单组件,AppFormField是一个自定义组件。
(我使用ref bcz,我使用表单组件外的Save按钮提交表单(
调用像这样的onBtnPress={() => this.handleSubmit()}
提交句柄
最后是我想要设置错误的handleSubmit函数。
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设置错误";你好"到字段"currentPassword",但我无法这样做。如果有错误,请告诉我,并告诉我正确的方法。
谢谢!
实际上问题出在我调用该方法的方式上。setFieldError
和setErrors
都是异步,我调用它们时没有等待。
A.您需要在Formik组件中添加errors
B。您使用setFieldError
呼叫方setFieldError("currentPassword", "Hello")
(信息(