Как подтолкнуть массив в состояние несколько раз в реагировать родной SetState? - PullRequest
0 голосов
/ 05 мая 2019

Я бы хотел перевести несколько массивов в одно и то же состояние (массив), как показано ниже.

constructor(props){
 super(props);
 this.state = {
  itemsArray1: [],
  itemsArrayMixed: [],
 }
}


handleSetState1() {
 this.setState({ 
  itemsArray1: [
   {name: 'aaa', id: '001', address: 'xxx' },
   {name: 'aaa', id: '002', address: 'yyy'},
   {name: 'ccc', id: '003', address: 'zzz'},
  ]
 });

 this.setState({ itemsArrayMixed: [...itemsArray1] });

}

handleSetState2() {
 this.setState({ 
  itemsArray1: [
   {name: 'ddd', id: '004', address: 'ttt' },
   {name: 'eee', id: '005', address: 'uuu'},
   {name: 'fff', id: '006', address: 'www'},
  ]
 });

 this.setState({ itemsArrayMixed: [...itemsArray1] });

}

console.log(itemsArrayMixed) // => in itemsArrayMixed,  I want to get 6 objects.

Приведенный выше код является лишь примером.

В моем проекте я импортирую 6 массивов, которые включают объекты из другого магазина. И я хочу перевести все эти массивы в одно и то же состояние (в данном случае itemsArrayMixed).

Конечно, если я хочу обрабатывать только один массив, это легко сделать, и я знаю, как это сделать.

Однако я не знаю, как перевести несколько массивов в одно и то же состояние ...

1 Ответ

0 голосов
/ 05 мая 2019

Вы просто добавляете новый массив (itemsArray1) в смешанный массив, не получая его предыдущего значения. Вы должны попробовать это, и это будет работать

handleSetState1() {
  let itemArray1 = [
    {name: 'aaa', id: '001', address: 'xxx' },
    {name: 'aaa', id: '002', address: 'yyy'},
    {name: 'ccc', id: '003', address: 'zzz'},
   ]
  this.setState({ 
   itemsArray1 
  });
  this.setState({ itemsArrayMixed: [...this.state.itemsArrayMixed, itemArray1] });
}

Это обновит itemArrayMixed и сохранит все значения.

...