Estoy desarrollando una aplicación con reaccionar nativo. usando formik para formularios, recibo este error 'TypeError: undefined no es un objeto (evaluando '_useFormikContext.errors')
'
import { useFormikContext } from "formik"; import { ErrorMessage } from "./index"; import ImageInputList from "../ImageInputList"; function FormImagePicker({ name }) { const { errors, setFieldValue, touched, values } = useFormikContext(); const imageUris = values[name]; const handleAdd = (uri) => { setFieldValue(name, [...imageUris, uri]); }; const handleRemove = (uri) => { setFieldValue( name, imageUris.filter((imageUri) => imageUri !== uri) ); }; return ( <> <ImageInputList imageUris={imageUris} onAddImage={handleAdd} onRemoveImage={handleRemove} /> <ErrorMessage error={errors[name]} visible={touched[name]} /> </> ); } export default FormImagePicker;Está tratando de obtener una propiedad de objeto cuando aún no está definida, intente hacer esto:
{errors && (<ErrorMessage error={errors[name]} visible={touched[name]} />)} Si esto no es lo que desea, intente encontrar una solución diferente, pero siempre recuerde que no puede obtener errors[name] así como así, debe asegurarse de que existan errors antes de hacerlo.
Espero que esto resuelva tu problema, Saludos!
Debe llamar a FormImagePicker dentro de un componente formik:
<AppForm initialValues={{ title: "", price: "", description: "", category: null, images: [], }} validationSchema={validationSchema} onSubmit={(values) => console.log(values)} > <FormImagePicker name="images" /> // ==> here <== <AppFormField maxLength={255} name="title" placeholder="Title" /> <AppFormField keyboardType="numeric" maxLength={8} name="price" placeholder="Pirce" width={120} /> <AppFormPicker item={categories} name="category" placeholder="Category" width={"50%"} PickerItemComponent={CategoryPickerItem} numberOfColumns={3} />