Как описано, ваша проблема - это вариант использования для Object.assign
, поскольку вы просто хотите скопировать содержимое четырех объектов (на sortFilters
) в ваш объект состояния.Вы можете сделать это вручную:
Object.assign(this.newState.letterType, sortFilters.letterType);
Object.assign(this.newState.letterTag, sortFilters.letterTag);
Object.assign(this.newState.departmentName, sortFilters.departmentName);
Object.assign(this.newState.assignedOfficer, sortFilters.assignedOfficer);
... или в цикле:
for (const name of Object.keys(sortFilters)) {
Object.assign(this.newState[name], sortFilters[name]);
}
объединяет записи из объектов sortFilters
с теми, что в this.newState
.Если вы хотите вместо них заменить , вы будете использовать назначение (и, вероятно, поверхностную копию, но это зависит от того, как sortFilters
будет использовано позже):
this.newState.letterType = Object.assign({}, sortFilters.letterType);
this.newState.letterTag = Object.assign({}, sortFilters.letterTag);
this.newState.departmentName = Object.assign({}, sortFilters.departmentName);
this.newState.assignedOfficer = Object.assign({}, sortFilters.assignedOfficer);
или
for (const name of Object.keys(sortFilters)) {
this.newState[name] = Object.assign({}, sortFilters[name]);
}
Обратите внимание, что Object.assign
делает мелкую копию;если какой-либо из этих объектов является вложенным, вам понадобится что-то еще.
Начиная с ES2018, вы можете использовать разброс свойств при создании новых объектов вместо Object.assign
:
for (const name of Object.keys(sortFilters)) {
this.newState[name] = {...sortFilters[name]};
}