ReactJS, Хуки - Как установить состояние после функции .map ()? - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь изменить состояние со значениями из массива. Пример:

const [state, setState] = useState({});
const test = [1, 2, 3];
        test.map((item, i) => {
          setState({ ...state, [`item-${i}`]: item });
        });

Текущее состояние:

item-2: 3

Чего я хочу добиться:

item-0: 1,
item-1: 2,
item-2: 3

Я пытался сделать это несколькими способами (все выглядят одинаково), но эффект тот же: / кто-нибудь знает, как его решить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Вы можете использовать функциональную версию установленного состояния и уменьшить ее до sh this:

  setState(prevState => {
    return test.reduce((acc, next, i) => {
      return {
        ...acc,
        [`item-${i}`]: next
      },
    }, prevState);
  });

Это имеет преимущество в том, что делает это за один вызов, и его легче читать.

1 голос
/ 16 марта 2020

Вы можете обновить состояние, используя метод forEach(), например:

test.forEach((item, i) => {
   setState(state => ({...state, [`item-${i}`]: item}));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...