Je suis nouveau pour réagir. Dans mon état, j'essaie d'avoir une matrice vide initialisée pour stocker des polygones.
La structure que je veux avoir est une matrice comme J'essaie d'avoir un P> Toutefois, lorsque je vous enregistrerai ultérieurement le ceci.state.polylist = [[Dot1, Dot2, Dot3 ...], [Dot1, Dot2, Dot3 ...]] code> < / p> State.polyliste code>, je n'ai que quelques-unes Array vide ([]) Liste intérieure P> P>
4 Réponses :
Vous pouvez ajouter comme ce tableau à l'étage d'état fonction pour ajouter p>
changer de quelque chose comme ci-dessous.
let newValue = [points]; // "points" is [dot1,dot2,dot3...]
console.log(newValue[0][0]); // able to print correctly
let newState = { ...this.state,
polyList: [...this.state.polyList, newValue] };
this.setState(newState)
Le clonage profond dans espère que cela fonctionne pour vous. P> p> réacte code> ne fonctionne pas comme vous le faites. Une manière que je préfère utiliser est de omister code> opérateur. Vous pouvez faire quelque chose comme:
Étant donné qu'un tableau est un type de référence, il attribue la valeur même après sa concaténation nouveaustate.polylist = newstate.polylist.concat (newvalue) code> donc ce n'est donc pas la raison exacte. Le clonage profond pourrait être comme mentionné dans les commentaires de Jayce.
@Ramesh Oui, vous avez raison. Je vais mettre à jour ma réponse. Merci.
La meilleure façon de faire cela serait structurant.
let oldState = [1,2,4] this.setState ([...oldState, [new state array]])
Merci pour rien. Mais cela ne fonctionne toujours pas. La liste se tourne pour être toutes remplies de tableaux vides.
Étant donné que votre état est imbriqué, vous devez effectuer un clone profond pour copier votre état pour empêcher la mutation de l'état.
objet.Assign () code> ne fait pas un clone profond.