https://facebook.github.io/react/docs/update.html
I have an update function that receives an index along with the event so as to alter the value for that specific item in the array.
How do I get index
to be evaluated instead of treated as a set key in this scenario? Is it even possible?
updateValue: function(index, e) { var items = React.addons.update(this.state.items, { index: { amount: {$set: e.target.value} } }); this.setState({ items: items }) }
Right now this obviously doesn't work because it's attempting to update this.state.items['index']['amount']
which is not set, when I want to modify this.state.items[1]['amount']
for an index of 1.
You could use ES6 computed property names, which would look like this with your index
variable:
updateValue(index, e) { var items = React.addons.update(this.state.items, { [index]: { amount: {$set: e.target.value} } }) this.setState({items}) }
According to this ES6 compatability table, React's JSX transpiler supports them when its Harmony transforms are enabled, or you could use Babel instead (since react-tools is being deprecated in favour of Babel anyway).
Failing that, you could use a helper function to create an object with a given named property:
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}) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With