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 或其他库的经过社区验证的稳定版本)