React - formik: czy jest istotna różnica między setValues a setFieldValue

0

To mój pierwszy kontakt z Formikiem. Przerabiając jeden manuał online i przerabiając jego przykłady na moją modłę popełniłam kod :


export default withFormik({
  mapPropsToValues: () => ({ email: "", password: "" }),
  validationSchema: Yup.object().shape({
    email: Yup.string()
      .email("Invalid email address")
      .required("Required"),
    password: Yup.string()
      .min(8, "Must be more than 8 characters")
      .required("Required")
  }),
  handleSubmit: (values, actions) => {
    actions.setValues({
      ...values,
      username: `@${values.email.split("@")[0]}`
    });

    if (values.email === "[email protected]") {
      actions.setFieldValue("isEmailFlagged", { flagged: true, reason: "test" });
    }
    actions.setSubmitting(false);
    
  }
})(WithFormik);

Chodzi wyłącznie o to co jest zawarte w handleSubmit. Zmieniam tam wartość dwóch pól, na dwa sposoby. Oba działają. Pytanie brzmi, czy jest między niemi jakaś znacząca różnica (tzn. między setFieldValue a setValues w tym przypadku, kiedy modyfikujemy jedno pole)?

1

SetValues - służy do ustalania wartości całego formularza. A setFieldValue tylko jednego pola.

Myślę, że ten HOC jest zbędny. Jaki masz use-case? Według mnie lepiej używać gotowych komponentów Formik, Field itp.

if (values.email === "[email protected]") {
  actions.setFieldValue("isEmailFlagged", { flagged: true, reason: "test" });
}
actions.setSubmitting(false);

Jeżeli to jakaś forma walidacji to lepiej do tego wykorzystać yupa.

0

@Kokoniłaj: Wiesz, ja to dopiero zaczynam powoli ogarniać. Yup jest. Natomiast czy lepiej przez withFormik, czy useFormik, to robię przykłady i takie i takie. Teraz akurat withFormik, tu chodzi tylko o jakieś ogólne oblatanie, którego jeszcze nie mam. Co się tyczy sedna, właściwie tak mi się wydawało jak piszesz, pytanie, czy nie ma jeszcze ( poza tym co napisałeś) jakichś niuansów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1