react mutables inmutables inmutable inmutabilidad immutable javascript reactjs ecmascript-6

javascript - mutables - set immutable



Clave dinámica en el ayudante de actualización de inmutabilidad para array (1)

Podría usar los nombres de propiedad computados de ES6 , que se verían así con su variable de index :

updateValue(index, e) { var items = React.addons.update(this.state.items, { [index]: { amount: {$set: e.target.value} } }) this.setState({items}) }

De acuerdo con esta tabla de compatibilidad con ES6 , el transpiler JSX de React los admite cuando sus transformaciones de Harmony están habilitadas, o podría usar Babel lugar (ya que react-tools está en desuso en favor de Babel de todos modos).

Si falla, puede usar una función auxiliar para crear un objeto con una propiedad con un nombre dado:

function makeProp(prop, value) { var obj = {} obj[prop] = value return obj } // ... updateValue: function(index, e) { var items = React.addons.update(this.state.items, makeProp( index, { amount: {$set: e.target.value} } )) this.setState({items: items}) }

https://facebook.github.io/react/docs/update.html

Tengo una función de actualización que recibe un índice junto con el evento para alterar el valor de ese elemento específico en la matriz.

¿Cómo consigo que se evalúe el index en lugar de tratarlo como una clave establecida en este escenario? ¿Es incluso posible?

updateValue: function(index, e) { var items = React.addons.update(this.state.items, { index: { amount: {$set: e.target.value} } }); this.setState({ items: items }) }

En este momento, obviamente esto no funciona porque está intentando actualizar this.state.items[''index''][''amount''] que no está establecido, cuando quiero modificar this.state.items[1][''amount''] para un índice de 1.