J'essaie de changer l'état de mon application sans remplacer les valeurs qui n'ont pas changé. Je le fais en utilisant l'opérateur de la propagation, mais quelque chose ne va pas.
Voici mon état de base: avec après avoir effectué le système d'instate, le nouvel état ressemble à ceci: P> usestate ({Data: [{nom: non défini, projet: []}]}); code> p> SETState Code> Je veux juste ajouter des noms mais garder le tableau de projet vide car il n'a pas changé. p> [
{name: "john doe"},
{name: "jane doe"}
]
3 Réponses :
par après que vous devriez avoir p> ... mais vous vouliez probablement gérer les noms et projeter séparément: p> SetManager (prevstate => ({... prevstate, données: res.data})) code> Vous remplacez simplement votre garde de bienvenue "principale" data code> . DATA CODE> est une matrice, de nouvelles valeurs sont en tableau ... Simplement concat code> p> setManager(prevState => ({
...prevState,
name : prevState.name.concat( res.data )
}))
Probablement ce dont vous avez besoin est la suivante:
const [manager, setManager] = useState([{ name: undefined, project: [] }]);
setManager(prevState =>
prevState.data.map((item, index) => ({ ...item, ...res.data[index] }))
);
Vous avez inité votre état avec Changez ceci de p> useState({data : {name : undefined , project : []} });
Propagation fait une fusion peu profonde. Voir Comment faire de la fusion profonde au lieu de fusion peu profonde?