In React’s this.state I have a property called formErrors
containing the following dynamic array of objects.
[ {fieldName: 'title', valid: false}, {fieldName: 'description', valid: true}, {fieldName: 'cityId', valid: false}, {fieldName: 'hostDescription', valid: false}, ]
Let’s say I would need to update state’s object having the fieldName cityId
to the valid value of true
.
What’s the easiest or most common way to solve this?
I’m OK to use any of the libraries immutability-helper, immutable-js etc or ES6. I’ve tried and googled this for over 4 hours, and still cannot wrap my head around it. Would be extremely grateful for some help.
Advertisement
Answer
You can use map
to iterate the data and check for the fieldName, if fieldName is cityId then you need to change the value and return a new object otherwise just return
the same object
.
Write it like this:
var data = [ {fieldName: 'title', valid: false}, {fieldName: 'description', valid: true}, {fieldName: 'cityId', valid: false}, {fieldName: 'hostDescription', valid: false}, ] var newData = data.map(el => { if(el.fieldName == 'cityId') return Object.assign({}, el, {valid:true}) return el }); this.setState({ data: newData });