Реагировать: как перезаписать состояние

#reactjs

#reactjs

Вопрос:

Обычно, когда мы setState хотим объединить какое-то новое состояние со старым состоянием. У меня есть вариант использования, когда я хочу перезаписать старое состояние. Есть ли какой-нибудь чистый способ сделать это?

Например, предположим, что мое текущее состояние имеет 561 различных атрибута. Я хочу, чтобы у нового состояния было 3 атрибута. Должен ли я повторять все атрибуты в цикле for и вызывать setState 561 раз, чтобы удалить каждый из них по отдельности?

Ответ №1:

Чистого способа нет, переназначение this.state после построения компонента считается плохой практикой.

Как предлагается в вопросе, состояние должно быть очищено путем перебора его ключей:

 setState(prevState => {
  const state = {};
  for (let key in prevState)
    state[key] = undefined;
  ...
  return state;
});
  

Если слишком много свойств для обработки, это, вероятно, означает, что состояние изначально было структурировано неэффективным образом.

Комментарии:

1. Я полагаю, это более эффективно, чем вызывать setState несколько раз.