Comment puis-je effacer des états ou tableau vide sur cliquez de réagir 0.14 ES6?
Je suis rendu un tableau dans un modal. Une fois que le modal ferme j'ai besoin de vider le tableau.Le code suivant met à jour le tableau, mais pas effacer tableau sur cliquez de closeModal.
constructor(props,context) {
super(props,context);
this.state = {
myArray: []
};
}
pushData(newVar) {
this.setState((state) => {
myArray: state.myArray.push(newVar)
});
}
closeModal() {
this.setState({
myArray: []
})
}
- Quelque chose comme cela.état.myarray=[]
- Hey Désolé, vous avez raison @Antonio cela.état.myarray=[] corrigé mon problème.
- Envoyer des données semble bizarre... j'aurais pu écrire cela.état.montableau.push(newVar)
- c'.état.montableau.push(newVar) cette façon de pousser n'a pas fonctionné pour moi. J'ai essayé .concat trop mais il n'a pas de travail
- Êtes-vous une erreur? Il n'est pas clair ce qui est cassé de votre question. Quel est votre
render
fonction? - Désolé pour le problème donné, j'ai découvert la closeModal ne m'a appelé sur componentWillUnmount. Alors je l'ai Changé de retour à mon ancien code et fixé cette.setState({montableau: []}); fonctionne.
state.myArray.push(newVar)
ne fonctionnera pas comme prévu non plus.Array.prototype.push
renvoie la longueur de la nouvelle tableau, pas le tableau avec la nouvelle valeur.setState(state => ({myArray: state.myArray.concat(newVar)}))
est plus proche de ce que vous cherchez.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé le problème, c'est mon closeModal ne m'a appelé à la fermeture modal. Je fais que de closeModal sur componentWillUnmount fonction.
J'ai compris que le code ci-dessous causes du problème.
Je l'ai changé de retour à
this.state
à l'extérieur du constructeur. Qui pourrait résoudre votre problème immédiat, mais est cause de bugs.this.setState({ myArray: [] });
à la place.Un couple de solutions avec des explications à ce sujet (quoique dans l'ES5) peut être trouvé ici:
https://stackoverflow.com/a/29994490/4572987
Vous pouvez ainsi l'utiliser pour effacer tableau sans utiliser setState:
Cela fonctionne dans n'importe quelle fonction.