J'exécute une carte qui crée dynamiquement un groupe de composants où le nombre total est basé sur la longueur d'un tableau. Chaque composant a besoin de sa propre valeur dans l'état.

Donc, si la carte s'étend sur un tableau de trois éléments...

arr.map((item, index) => {
  const newStateProp = "item" + index;
  return newStateProp;
}

L'état de l'application ressemblerait à ceci quelque part... peut-être similaire à ce que vous verriez dans React Dev Tools...

...
this.state: {
  item0: false,
  item1: false,
  item2: false
}
...

Je ne sais pas si c'est faisable... merci d'avance.

0
kaidez 19 mars 2019 à 03:48

2 réponses

Meilleure réponse

Vous pourriez faire quelque chose comme ça

newState = {};

for (let i = 0; i < arr.length; i++) {
    newState[arr[i]] = false
}

setState(newState);

C'est ce que tu essaies de faire ?

1
Chris Sandvik 19 mars 2019 à 01:12

Oui, c'est possible de faire comme ça.

Si vous voulez faire quelque chose comme ça après le montage de component, vous pouvez vous référer à la Réponse de Chris Sandvik.

Mais si vous voulez le faire dans le constructeur en utilisant des accessoires ou autre chose. Vous pouvez modifier son code comme ci-dessous.

const arr = [];
const newState = {};

for (let i = 0; i < arr.length; i++) {
    newState[`item${arr[i]}`] = false;
}

this.state = newState;

console.log('State', this.state);
0
Sathvik Chinnu 19 mars 2019 à 01:30