J'essaie d'écrire une application de gestion de contact qui utilise un état de réaction pour stocker les informations de contact.
J'ai deux états, une donnée et l'autre userData. Les données sont censées être un objet qui stocke le contact que l'utilisateur entre dans les coordonnées de contact tandis que UserData serait une matrice de tous les objets de données. P>
Mais pour une raison quelconque, je reçois une seule propriété de l'objet ,
3 Réponses :
Vous oubliez de répandre -data lorsque vous le faites:
setData({ ...data [name]: value, });
Votre code est bon, le problème est que lorsque vous utilisez Votre que dans votre formulaire de soumission, vous n'avez pas besoin du tout et vous pouvez modifier votre setingdata code> Vous perdez tout. Dans des composants fonctionnels, vous devez répandre le
olddata code> puis modifier ce que vous aimez.
setdata code> doit ressembler à cet intérieur
handlechange code>: < / p>
userData code>, car vous pouvez simplement utiliser les données
code> Objet qui a toutes les informations dont vous avez besoin. p>
poignées code> comme ceci: p>
J'ai collé le code correct ici, à l'aide de l'opérateur de diffusion, la copie des données précédentes est fournie lorsque SetData est appelé de manière à ce que les valeurs ne soient pas écrasées.
const [data, setData] = useState({ firstName: "", lastName: "", phoneNumber: "", address: "", imag: "", }); // declear a new state varaible to store data const [userData, setUserData] = useState([""]); function handleChange(e) { let name = e.target.name; let value = e.target.value; setData({ ...data, [name]: value, }); } function handleSubmit(e) { e.preventDefault(); setUserData([...userData, data]); } console.log(userData); return ( <> <form id="form" className="needs-validation" onSubmit={handleSubmit}> <div> <input className="imgFile" type="text" placeholder="First name" value={data.firstName} name="firstName" onChange={handleChange} /> <input className="imgFile" type="text" placeholder="Last name" value={data.lastName} name="lastName" onChange={handleChange} /> <input className="imgFile" type="tel" placeholder="Phone Number" value={data.phoneNumber} name="phoneNumber" onChange={handleChange} /> <input className="imgFile" type="email" placeholder="Email" value={data.email} name="email" onChange={handleChange} /> <input className="imgFile" type="text" placeholder="Address" value={data.address} name="address" onChange={handleChange} /> <input type="file" name="img" accept="image/*" value={data.img} onChange={handleChange} /> <button className="contactButton">Save </button> </div> </form> </> ); }
Merci à tous pour votre aide.
@wealthMiq Bienvenue, vote Répondez-vous si vous les trouvez utiles.