【问题标题】:delete Formik Error Message after submitting form提交表单后删除 Formik 错误消息
【发布时间】:2020-08-30 15:40:00
【问题描述】:

进入我的屏幕后,输入字段上没有显示错误。

在我的表单中,我接受一个输入并在其上运行一个 graphql 突变。完成后,我重置表格。但是,重置后,我开始看到 Formik 错误,因为该字段是 .required() 并且目前它是空的。

仅当我尝试在没有输入的情况下提交表单时才会显示此错误。提交成功后就不应该显示了。

  const handleSubmitForm = (
    values: FormValues,
    helpers: FormikHelpers<FormValues>,
  ) => {
    editLocationName({
      variables: {
      favouritePlaceId: route.params.id,
      input: {customisedName: values.locationName}
      },
    });
    helpers.resetForm();
    helpers.setErrors({});
  };
.....


          <Formik
            initialValues={initialValues}
            onSubmit={handleSubmitForm}
            validationSchema={validationSchema}>
            {({ handleChange, handleBlur, handleSubmit, values }) => (
              <View style={styles.searchFieldContainer}>
                <View style={styles.form}>
                  <FieldInput
                    handleChange={handleChange}
                    handleBlur={handleBlur}
                    value={values.locationName}
                    fieldType="locationName"
                    placeholderText="Neuer Name"
                  />
                  <ErrorMessage
                    name="locationName"
                    render={(msg) => <ErrorText errorMessage={msg} />}
                  />
                </View>
                <View style={styles.buttonContainer}>
                  <ActionButton buttonText="Save" onPress={handleSubmit} />
                </View>
              </View>
            )}
          </Formik>

验证架构:

const favouriteLocationNameValidationSchema = yup.object().shape({
  locationName: yup
  .string()
  .label('locationName')
  .required('Required Field')
});

如何重置错误信息以及表单?

setErrors({}) 对我不起作用。

【问题讨论】:

  • helpers.resetForm() 就足够了。它重置了一切
  • 不,它没有。也请看这个qs。即使没有keyboard.dismiss(),当我触摸屏幕或尝试滚动它时,错误就会开始出现stackoverflow.com/questions/63654972/…@ShubhamVerma

标签: javascript reactjs typescript react-native formik


【解决方案1】:

在这里添加它,因为建议需要代码。添加以下代码,如果有帮助请告诉我。

helpers.resetForm({
 errors: {},
 touched: {}
});

Remove helpers.setErrors({});

【讨论】:

  • 不,它没有。我也在另一个屏幕上尝试过这个stackoverflow.com/questions/63654972/…,如果我再次触摸/滚动屏幕,即使没有keyboard.dismiss()也会出现错误。也无济于事
  • 你能提供codeandbox链接,我可以看到发生了什么。因为这应该可行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2019-07-16
  • 2017-01-01
  • 2019-06-06
  • 2020-07-27
  • 1970-01-01
相关资源
最近更新 更多