#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
несколько раз.