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 };
}
}
是否可以在返回对象的同时对其进行解构。 例如,要更改此代码:
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 };
}
}