Estoy usando Formik para enviar mis formularios. Estoy tratando de agregar parámetros personalizados a mi función onSubmit, para poder obtener values del formulario y ese parámetro personalizado.
const handleSubmit = async (customParam) => { console.log(customParam); console.log('Values : '); console.log(values); } <AppForm initialValues={{ rejectionComment: "" }} onSubmit={handleSubmit(myCustomParam)}> //My FORMIK form <AppFormField multiline={true} numberOfLines={4} name="rejectionComment" secured={false} autoCapitalize="none" autoCorrect={false}/> <SubmitButton title="Valider" /> //Validation button </AppForm> Con este código, puedo registrar myCustomParam pero no puedo obtener los valores del formulario [Unhandled promise rejection: ReferenceError: values is not defined]
Si cambio onSubmit a onSubmit={handleSubmit} y handleSubmit a const handleSubmit = async (values) => {console.log(values);} puedo registrar mis valores, pero no puedo agregar mi parámetro personalizado.
¿Puedes por favor proporcionar algo de ayuda?
Puedes hacer esto con dos cambios.
handleSubmit para aceptar dos argumentos (tampoco es necesario que sea asíncrono, a menos que esté haciendo más cosas de las que ha mostrado aquí). const handleSubmit = (values, customParam) => { console.log({ values, customParam }); };values donde Formik los proporciona. <AppForm onSubmit={values => { handleSubmit(values, myCustomParam); })} ... >Explicación:
Cuando cambia su código a onSubmit={handleSubmit) , el componente Formik lo llama con los valores del formulario. La forma larga de esto sería onSubmit={values => handleSubmit(values)} . Dado que su parámetro personalizado se define fuera de Formik, debe pasarlo a la función manualmente.
Abe señaló lo obvio. Al usar la devolución de llamada, he podido definir valores y parámetros personalizados:
onSubmit={(values) => handleSubmit(values, "test")}
const handleSubmit = async (values, customParam) => { console.log(values); console.log(customParam); }