javascript - values - ¿Cómo configuro State para array anidado?
eliminar elemento array javascript w3schools (4)
Mi forma preferida de hacer esto ahora es tan simple como:
let newAccess = this.state.access;
newAccess.hospital_id = 1;
setState({access: newAccess});
Ligeramente más simple que la respuesta aceptada actual.
EDIT (basado en la pregunta de @SILENT)
Parece que este es en realidad un método potencialmente peligroso. Lectura adicional aquí Reaccionar: Una charla (muy breve) sobre la inmutabilidad.
Parece que una mejor manera de hacer esto sería:
let newAccess = Object.assign({}, this.state.access, {hospital_id:1});
this.setState({access: newAccess});
Para un complemento que estoy usando, tengo que tener un estado que se vea así:
getInitialState() {
return {
invalid: true,
access: {
access_code: '''',
zipcode: '''',
password: '''',
confirm: '''',
hospital_id: '''',
},
}
},
¿Cómo establecería el estado de hospital_id sin establecer el resto del acceso?
Esto parece eliminar todo menos hospital_id:
this.setState({access: {hospital_id: 1}})
Otra forma de hacerlo sería
const newAccess = {...this.state.access};
newAccess.hospital_id = 1;
setState({access: newAccess});
El uso del operador de propagación crea una clonación de this.state.access
. this.state.access
.
Puede usar Object.assign o la propuesta de propagación de objetos para crear copias de objetos con propiedades actualizadas.
this.setState({
access: {
...this.state.access,
hospital_id: 1,
},
});
this.setState({
access: Object.assign({}, this.state.access, {
hospital_id: 1,
}),
});
O para la versión más corta y la actualización atómica:
this.setState(({access}) => ({access: {
...access,
hospital_id: 1,
}});
Y una opción más es el complemento de actualizaciones:
var update = require(''react-addons-update'');
this.setState({
access: update(this.state.access, {
hospital_id: {$set: 1},
})
});
Yo usaría el primero.
let newAccess = Object.assign({}, this.state.access);
newAccess.hospital_id = 1;
this.setState({access: newAccess});