#javascript
#javascript
Вопрос:
В настоящее время я использую оператор spread для обновления большого объекта, и он работает просто отлично, за исключением того, что кажется, что нужно вводить каждый раз, когда я хочу обновить объект
setGlobal((state: any) => ({
...state,
locationData: {
...state.locationData,
Config: { ...state.locationData.Config, Enabled: true },
},
}));
}
}, [onlineResponse]);
и я хочу попробовать Object.assign(), но я не могу получить тот же результат, и мой линтер взрывается, говоря, что у меня не хватает ‘,’ и ‘:’
setGlobal((state: any) => ({
const state = Object.assign({}, state, {state.locationData.Config.Enabled : true })
}));
}
}, [onlineResponse]);
Комментарии:
1. Я бы придерживался оператора spread, потому что он кажется более чистым. Чтобы избежать большого ввода, вы можете рассмотреть возможность извлечения кода в функцию (но внутри этой функции я бы сохранил оператор spread).
Ответ №1:
На мой взгляд, синтаксис оператора spread выглядит более чистым и читаемым, но если вы хотите добиться такой же функциональности, Object.assign
то это будет похоже на:
Object.assign({}, state, { locationData: { ...state.locationData, config: {...state.locationData.config, Enabled: true }} });