Разрушение в декларации возврата
У меня есть несколько случаев в моем приложении, которые выглядят примерно так:
getVariables() {
const {
allowCustomValues,
budgets,
budgetsToAdd,
budgetsToRemove,
isGlobal,
isRequired,
name,
tagTypeId,
valuesToAdd,
valuesToDelete,
} = this.props;
return {
allowCustomValues,
budgets,
budgetsToAdd,
budgetsToRemove,
isGlobal,
isRequired,
name,
tagTypeId,
valuesToAdd,
valuesToDelete,
};
}
Это кажется очень громоздким, но более короткое решение предполагает предшествование каждой переменной, с которой я хочу this.props.
, что на самом деле не лучше с точки зрения обслуживания.
Я хотел бы что-то вроде:
getVariables() {
return this.props.{
allowCustomValues,
budgets,
budgetsToAdd,
budgetsToRemove,
isGlobal,
isRequired,
name,
tagTypeId,
valuesToAdd,
valuesToDelete,
};
}
Есть какой-то синтаксис ES6, который позволяет мне сделать этот код немного более сухим?
РЕДАКТИРОВАТЬ: Возможно, дубликат ES6 деструктуризации в заявлении возврата, но тот, который имеет принятый ответ, который не решает проблему.
3 ответа
На самом деле деструктуризация не позволяет этого.
Вы спрашиваете об эквиваленте для Лодаша pick()
, Возможно, у вас уже есть lodash в вашем проекте. Если вы этого не сделаете, вы все равно можете написать такого помощника самостоятельно (но лучше использовать стабильный, проверенный сообществом вариант из lodash или другой библиотеки)
Почему бы просто не использовать Object.assign()
?
return Object.assign({}, this.props);
Это создаст новый пустой объект, а затем скопирует все перечисляемые свойства из this.props
внутрь. Целевой объект возвращается Object.assign()
так что это в значительной степени делает всю работу.