Reputation: 129
I have an array inside an state which is an associative array. I want to insert values into this array when an event occurs.
State Declaration I used.
state = {
array: [{
aaa: '',
bbb: ''
}]
};
Function which is supposed to insert values to the array inside state.
reader.onload = (e) => {
var newArray = {
aaa: new_aaa,
bbb: new_bbb
}
this.setState({
array: this.state.array.concat(newArray)
});
}
Somehow , it isn't working ^_^
Upvotes: 1
Views: 277
Reputation: 10262
You could use Destructuring_assignment
when you are setting your state.
state = {
array: [{
aaa: '',
bbb: ''
}]
};
reader.onload = (e) => {
var newArray = {
aaa: new_aaa,
bbb: new_bbb
}
this.setState({
array: [...this.state.array,newArray]
});
}
Upvotes: 1
Reputation: 33974
Try with below code. The best approach to push values or object to an array in React is using previous state like below
reader.onload = (e) => {
const obj = {
aaa: new_aaa,
bbb: new_bbb
}
this.setState( prevState => ({
array: [...prevState.array, obj]
}));
}
Or
reader.onload = (e) => {
const obj = {
aaa: new_aaa,
bbb: new_bbb
}
const array = [...this.state.array];
array.push(obj);
this.setState({
array
});
}
Upvotes: 1