web-dev-qa-db-ja.com

returnステートメント内でのES6の構造解除

オブジェクトを返すと同時にオブジェクトを分解することは可能ですか?たとえば、このコードを変更するには:

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

このようなものに:

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

いいえ、それは不可能です。

(免責事項:構文は機能し、解体と戻りの両方を行いますが、これはと同等です

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

これはおそらくあなたが望んでいたものではありません)

(私が新しいオブジェクトを作成していると想定している)やりたいことを行うには、オブジェクトリテラルを使用する必要があります(省略形のプロパティ表記を使用する可能性があります)。参照 ES 6のオブジェクトからいくつかのプロパティを取得するためのワンライナー

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

ES6では、newItemキーをすべて渡したい場合は、次のこともできます。

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