Disons que j'ai une liste d'objets simples dans mon this.state.list
que je peux ensuite utiliser pour rendre une liste d'enfants. Quelle est alors la bonne façon d'insérer un objet dans this.state.list
?
Voici la seule façon dont je pense que cela fonctionnera car vous ne pouvez pas muter this.state
directement le comme mentionné dans la doc.
this._list.push(newObject):
this.setState({list: this._list});
Cela me semble moche. Y a-t-il un meilleur moyen?
javascript
reactjs
Khoi
la source
la source
Réponses:
concat
renvoie un nouveau tableau, donc vous pouvez faireune autre alternative est l' assistant d'immuabilité de React
la source
concat
prend un tableau, donc vous voudrezthis.state.list.concat([newObject])
.concat
il l'enveloppera dans un tableau, mais il est préférable d'ajouter le tableau vous-même pour être explicite: si vous avez[[1,2], [3,4]]
et voulez ajouter[5,6]
comme élément suivant, vous devez faire.concat([[5,6]])
autre chose va finir avec[[1,2], [3,4], 5, 6]
.Array.concat
vaut mieux ajouter une autre bibliothèque.setState () peut être appelé avec une fonction comme paramètre:
ou dans ES5:
la source
this.setState((state) => ({ list: state.list.push(newObj) }))
NUMBER
, qui sera défini sur lalist
variablethis.setState((state) => ({ list: [...state.list, newObj] }))
Mise à jour 2016
Avec ES6, vous pouvez utiliser:
la source
...[newObject]
est le même que justenewObject
.À partir des documents de réaction ( https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous ):
Vous devriez donc faire ceci à la place:
la source