w3schools values multidimensional functions eliminar elemento array javascript reactjs react-native

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});