Je fais "Charger plus" qui récupère 10 projets du backend chaque fois que le bouton est cliqué.

Je ne comprends pas que je suis confronté à ce problème fondamental mais étrange.

PROBLÈME (exemple)

const [ projectArray, setProjectArray ] = useState([ { id: 1 } ]) // original state
//
const { data } = await axios.get(`/api/project/explore/${page}`);
console.log(data); // returns array of objects 
if (data.length > 0) {
   setProjectArray(array => [...array, data]);
}
console.log(projectArray) 
// This^^ returns >>> [ {id: 1}, [ { id: 2 }, { id: 3 }] ]
0
Karan Kumar 20 oct. 2020 à 19:58

2 réponses

Meilleure réponse

Les données sont également un tableau, vous devez donc l'étendre également

   setProjectArray(array => [...array, ...data]);
2
Guruparan Giritharan 20 oct. 2020 à 17:02

Eh bien dans ce cas, data est déjà un tableau, donc il fonctionne comme prévu. Ajout d'un tableau à l'intérieur du tableau existant.

Vous voudrez probablement utiliser concat() pour joindre les deux tableaux ensemble.

Essayez setProject(concat(projectArray,data));

1
Tyler Maran 20 oct. 2020 à 17:07