web-dev-qa-db-fra.com

ES6 déstructuration dans une déclaration de retour

Est-il possible de détruire un objet tout en le retournant en même temps. Par exemple, pour modifier ce code:

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

Pour quelque chose comme ça:

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

Non, ce n'est pas possible.

(Avertissement: votre syntaxe fonctionne et fait à la fois la déstructuration et le retour, mais elle est équivalente à

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

ce qui n'est probablement pas ce que vous vouliez)

Pour faire ce que vous voulez (ce qui, je suppose, crée un nouvel objet), vous devez utiliser un objet littéral (potentiellement avec une notation de propriété abrégée). Voir aussi One-liner pour prendre certaines propriétés de l'objet dans ES 6 :

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

Dans ES6, vous pouvez également effectuer les opérations suivantes, si vous souhaitez transmettre toutes les clés newItem

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