Je veux ajouter un bouton Effacer pour plus de commodité aux utilisateurs:
constructor(props) { this.emailInput = React.createRef(); } <Field label="Email" name="email" ref={this.emailInput} onChange={onChange} component={TextField}/>
Mais obtenez ceci:
Attention: les composants de fonction ne peuvent pas recevoir de références. Les tentatives d'accès à cette référence échoueront.
3 Réponses :
vous pouvez essayer de définir un bouton de réinitialisation dans votre formulaire, par exemple
<form> <Field label="Email" name="email" onChange={onChange} component={TextField}/> <input type="reset" value="Reset"> </form>
J'ai pris l'exemple ici , il doit réinitialiser toutes les entrées du formulaire
@Maksym cela ne réinitialisera pas le formulaire Formik.
merci mais à la recherche d'un utilisateur entré le bouton de suppression de texte X sur chaque champ de texte.
dans ce cas, vous pouvez utiliser la fonction setFieldValue
avec le nom de votre champ
Pour réinitialiser des champs particuliers, utilisez setFieldValue
pour définir la valeur sur une chaîne vide.
setFieldValue: (field: string, value: any, shouldValidate ?: boolean) => void
Définissez impérativement la valeur d'un champ. Le champ
doit correspondre à la clé des
valeurs
que vous souhaitez mettre à jour. Utile pour créer des gestionnaires de modification d'entrée personnalisés.
Eg:
<Formik initialValues={initialValues} ... > {({ resetForm }) => ... <button type="reset" onClick={resetForm}> Reset All </button> ...
Pour réinitialiser tous les champs, utilisez resetForm
.
resetForm: (nextValues ?: Values) => void
Réinitialisez impérativement le formulaire. Cela effacera les
erreurs
ettouchées
, définissezisSubmitting
surfalse
,isValidating
sur false , et réexécutezmapPropsToValues
avec les accessoires actuels de WrappedComponent ou ce qui est passé en argument.
Eg:
<Formik initialValues={initialValues} ... > {({ setFieldValue }) => ... <button type="reset" onClick={() => setFieldValue('fieldName', '')}> Reset This </button> ...
Codesandbox: https://codesandbox.io/s/7122xmovnq