0
votes

Réagir Ajouter une matrice au tableau d'état

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 ceci.state.polylist = [[Dot1, Dot2, Dot3 ...], [Dot1, Dot2, Dot3 ...]] < / p>

J'essaie d'avoir un xxx

Toutefois, lorsque je vous enregistrerai ultérieurement le State.polyliste , je n'ai que quelques-unes Array vide ([]) Liste intérieure


1 commentaires

É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 () ne fait pas un clone profond.


4 Réponses :


1
votes

Vous pouvez ajouter comme ce tableau à l'étage d'état xxx

fonction pour ajouter xxx


0 commentaires

0
votes

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)


0 commentaires

0
votes

Le clonage profond dans réacte ne fonctionne pas comme vous le faites. Une manière que je préfère utiliser est de omister opérateur. Vous pouvez faire quelque chose comme: xxx

espère que cela fonctionne pour vous.


2 commentaires

É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) 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.



0
votes

La meilleure façon de faire cela serait structurant.

let oldState = [1,2,4]

this.setState ([...oldState, [new state array]])


1 commentaires

Merci pour rien. Mais cela ne fonctionne toujours pas. La liste se tourne pour être toutes remplies de tableaux vides.