return 语句中的解构
Destructuring in a return statement
我的应用中有多个案例看起来像这样:
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 语法可以让我把这段代码写得更干一点?
编辑:
可能是 的副本,但那个答案已被接受,但无法解决问题。
为什么不直接使用 Object.assign()
?
return Object.assign({}, this.props);
这将构建一个新的空对象,然后将 this.props
中的所有可枚举属性复制到其中。目标对象由 Object.assign()
返回,所以它几乎完成了所有工作。
怎么样
return {...this.props}
实际上解构不允许这样。
你问的是 lodash 的 pick()
的等价物。也许您的项目中已经有 lodash。如果你不这样做,你仍然可以自己编写这样的帮助程序(但最好使用来自 lodash 或其他库的经过社区验证的稳定版本)
我的应用中有多个案例看起来像这样:
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 语法可以让我把这段代码写得更干一点?
编辑:
可能是
为什么不直接使用 Object.assign()
?
return Object.assign({}, this.props);
这将构建一个新的空对象,然后将 this.props
中的所有可枚举属性复制到其中。目标对象由 Object.assign()
返回,所以它几乎完成了所有工作。
怎么样
return {...this.props}
实际上解构不允许这样。
你问的是 lodash 的 pick()
的等价物。也许您的项目中已经有 lodash。如果你不这样做,你仍然可以自己编写这样的帮助程序(但最好使用来自 lodash 或其他库的经过社区验证的稳定版本)