Nirvan bbs
Nirvan bbs

Reputation: 129

Inserting values inside an array which is in an State - React

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

Answers (2)

Narendra Jadhav
Narendra Jadhav

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

Hemadri Dasari
Hemadri Dasari

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

Related Questions