J'ai déclaré une liste vide dans mon état pour être utilisée pour contenir des noms de groupes. Lorsque j'actualise l'écran, je passe un appel API et j'obtiens une liste des groupes dont ce membre fait partie. J'ai du mal à définir cette liste de noms que j'obtiens de l'API à l'état. Il prend actuellement une liste de taille 3 et met simplement le tableau entier sous forme d'une chaîne au lieu de le définir comme un tableau de valeurs.
var objArray = JSON.parse(JSON.stringify(groups.data.data.getUser.groups));
console.log(objArray);
//These are the string arrays that need to be set to the state to update the card
let names = objArray.map(({ name })=> name);
console.log('Names: ' + names.length); //This is 3
this.setState({ groupNames: [`${names}`] });
console.log(this.state.groupNames.length);//This outputs 1 when it should be 3
3 Réponses :
cela devrait être:
this.setState({ groupNames: names});
vous étiez en train de mettre le tableau names dans un nouveau tableau en utilisant [names] au lieu de simplement names code >, ce nouveau tableau n'a qu'un seul enfant: le tableau des noms (sous forme de chaîne), donc la longueur renvoie 1 au lieu de 3
Merci, cela a fonctionné! Je pensais que cela devrait être facile comme ça, mais pour une raison quelconque, je n'ai pas pu trouver une réponse simple comme celle-ci en ligne.
heureux que cela ait aidé! :)
Attribuez simplement des noms à groupNames comme ci-dessous
this.setState ({groupNames: names});
Les modèles littéraux créés à l'aide de `convertissent votre tableau en chaîne.
Vous attribuez une valeur à un nouveau tableau dans cette instruction. C'est pourquoi il affiche la longueur 1.
this.setState({ groupNames: names });
Cela devrait être comme ça
this.setState({ groupNames: [`${names}`] }); // It is wrong