return 语句中的 ES6 解构

ES6 destructuring within a return statement

是否可以在返回对象的同时对其进行解构。 例如,要更改此代码:

const mapStateToProps = ({ newItem }) =>{
  const { id, name, price } = newItem;
  return { id, name, price };
}

像这样:

const mapStateToProps = ({ newItem }) =>{
  return { id, name, price } = newItem;
}

不,这不可能。

(免责声明:您的语法有效并且可以解构和返回,但它等同于

({ id, name, price } = newItem); // assigns global variables
return newItem;

这可能不是你想要的)

做你想做的事(我假设是创建一个新对象),你需要使用一个 object literal(可能与 shorthand 属性 符号)。另见 One-liner to take some properties from object in ES 6:

const mapStateToProps = ({newItem: {id, name, price}}) => ({id, name, price});

在 ES6 中,如果你想传递所有 newItem 键,你还可以执行以下操作

const mapStateToProps = ({ newItem }) => ({ ...newItem });

有一种方法可以在不重复的情况下做你想做的事。

但这需要使用禁用的js功能;这不再是解构了。

所以我完全不推荐它。

const mapStateToProps = ({ newItem }) =>{
  with (newItem) {
   return { id, name, price };
  }
}