J'essaye de comprendre comment fonctionne le react-hook-form. Pour cela, j'ai créé l'exemple suivant:
import React from 'react'; import { useForm } from 'react-hook-form'; const InputForm = () => { const { register, handleSubmit } = useForm(); const onSubmit = (data) => { console.log(data); }; return ( <> <Form onSubmit={handleSubmit(onSubmit)}> <Form.Group controlId='formBasicName'> <Form.Label>Name</Form.Label> <Form.Control type='text' name='name' ref={register} /> </Form.Group> <Form.Group controlId='formBasicEmail'> <Form.Label>Email address</Form.Label> <Form.Control type='email' name='email' ref={register} /> <Button className='submitBtn' type='submit'> Submit </Button> </Form> </> ); }; export default InputForm;
Cela fonctionne et si je soumets le formulaire, je peux voir l'objet de données dans la console. Le seul problème est qu'après chaque soumission, les zones de saisie affichent toujours leur valeur. Je veux qu'après chaque soumission, la valeur des zones de saisie devienne vide. Ce serait facile avec useState, mais maintenant que j'utilise react-hook-from, je ne sais pas comment faire ça.
3 Réponses :
Utilisez cette fonction d'envoi:
const onSubmit = (data, e) => { e.target.reset(); };
const InputForm = () => { const { register, handleSubmit, reset } = useForm(); const onSubmit = (data) => { console.log(data); reset(); }; Add it to the submit function
Utilisez le code suivant pour réinitialiser les champs de saisie
const onSubmit = (data, e) => { e.target[0].value = ''; // for name e.target[1].value = ''; // for email };
Veuillez expliquer comment cela peut aider, étendre le code à un exemple reproductible minimal, dans cet état, cela n'est pas utile.
Il est édité maintenant