Две очень похожие функции, одна не обновляет состояние правильно - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть две практически одинаковые функции, за исключением некоторых логических значений и одного оператора if:

  const checkboxSelectAll = (event: any) => {
    const { checked } = event.target;
    let items: number[] = [];

    if (checked) {
      for (let i = 0; i < itemData.length; i++) {
        items = [...items, parseInt(itemData[i].id)];
      }
    }

    setState(
      {
        ...state,
        areAllSelected: checked,
        isChecked: checked,
        selectedItems: items,
      }
    );
  }

const selectAllItems = (event: any) => {
    const { checked } = event.target;
    let items: number[] = [];

     for (let i = 0; i < itemData.length; i++) {
       items = [...items, parseInt(itemData[i].id)];
     }

    setState(
      {
        ...state,
        areAllSelected: true,
        isChecked: true,
        selectedItems: items,
      }
    );
  }

После срабатывания checkboxSelectAll результат console.log(selectedItems) является чем-то как [2348, 2349, 2350, 2351]. Но после запуска selectAll результат console.log(selectedItems) - это просто пустой массив [].

Я очень смущен. Код выглядит так, как будто он должен работать так же. Чего мне не хватает?

...