Digamos que tengo una lista de objetos simples en mi this.state.list
que luego puedo usar para representar una lista de niños. Entonces, ¿cuál es la forma correcta de insertar un objeto this.state.list
?
A continuación se muestra la única forma en que creo que funcionará porque no puede mutar this.state
directamente como se menciona en el documento.
this._list.push(newObject):
this.setState({list: this._list});
Esto me parece feo. ¿Existe una forma mejor?
javascript
reactjs
Khoi
fuente
fuente
Respuestas:
concat
devuelve una nueva matriz, por lo que puede hacerotra alternativa es el ayudante de inmutabilidad de React
fuente
concat
toma una matriz, así que querrásthis.state.list.concat([newObject])
.concat
no sea, la envolverá en una matriz, pero es mejor agregar la matriz usted mismo para ser explícito: si tiene[[1,2], [3,4]]
y desea agregar[5,6]
como el siguiente elemento, debe hacer.concat([[5,6]])
otra cosa Terminará con[[1,2], [3,4], 5, 6]
.Array.concat
seguro que es mejor agregar otra biblioteca.setState () se puede llamar con una función como parámetro:
o en ES5:
fuente
this.setState((state) => ({ list: state.list.push(newObj) }))
NUMBER
, que se establecerá en lalist
variablethis.setState((state) => ({ list: [...state.list, newObj] }))
Actualización 2016
Con ES6 puede utilizar:
fuente
...[newObject]
es lo mismo que justnewObject
.De los documentos de reacción ( https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous ):
Entonces deberías hacer esto en su lugar:
fuente