То, что вы должны сделать, это иметь модальное или что-то подобное, которое будет отображать ошибки.
При использовании Formik
тот компонент, который вы визуализируете (вы можете использовать component
, render
, а также children
), получит реквизит с ошибками, как вы можете видеть в примере из документов .
<Formik> {// getting the errors here }
{({ handleSubmit, handleChange, handleBlur, values, errors }) => (
<form onSubmit={handleSubmit}>
<input
type="text"
onChange={handleChange}
onBlur={handleBlur}
value={values.name}
name="name"
/>
{errors.name &&
<div>
{errors.name}
</div>}
<button type="submit">Submit</button>
</form>
)}
</Formik>
errors
будет объектом, поэтому вы проверяете keys
(или вы также можете использовать values
) из errors
и решаете, будете ли вы отображать ошибку модально или нет.
<Formik
validationSchema={yourValidationSchema}
onSubmit={whatYouWantTodoWhenEverythingIsGood}
initialValues={{ email: '' }}
>
{({ errors, values, handleChange, handleBlur}) => (
<View>
<TextInput
onChangeText={handleChange('email')}
onBlur={handleBlur('email')}
value={values.email}
/>
<Button onPress={props.handleSubmit} title="Submit" />
{// checking if you have errors}
{
Object.keys(errors).length > 0 &&
<Modal errors={errors}/>
}
</View>
)}
</Formik>
В зависимости от того, откуда ваш модал, вы можете использовать <Modal isActive={Object.keys(errors).length > 0} errors={errors}/>
или другие подобные вещи.
например. используя реагирующий нативный модал
<Modal
visible={Object.keys(errors).length > 0}
>
<View>
{// show the errors the way you want}
</View>
</Modal>
Вы должны использовать Object.keys(errors).length > 0
, чтобы решить, показывать ли вам модальное значение с errors
или нет.