Par exemple, dans les actions redux, j'ai vu dans le code de quelqu'un:
const updateChatMessage = text => ({ type: types.someActionType, text })
et:
export const updateMessage = text => { return (dispatch) => { dispatch(updateChatMessage(text)) } }
cela semble fonctionner comme un implique un return
mais je pensais que cela était déjà impliqué dans une flèche fonctions des crochets suivant la grosse flèche.
Que font les parenthèses ({...})
? sont-ils nécessaires? Existe-t-il une autre façon d'accomplir la même chose?
4 Réponses :
lorsque vous écrivez myFunction = value => ({prop: value})
il renvoie l'objet {prop: value}
, dans ce cas {}
sont un délimiteur d'objet et non un 'délimiteur de fonction'
let array = [{val: 2}, {val: 4}, {val: 8}, {val: 16}]; let output = array.map( ({val}) => ({val: val*2}) ); console.log(output);
autre par exemple:
lorsque vous voulez multiplier par deux chaque élément d'un tableau, vous pouvez écrire:
array.map (elem => {return elem * 2})
ou
array.map (elem => elem * 2)
// même résultat
et si vous voulez un exemple avec ()
qui enveloppe un objet littéral:
const updateChatMessage = text => ({ type: types.someActionType, text })
Si vous entourez les crochets avec des parenthèses, vous faites en sorte que votre fonction renvoie un objet littéral (vous n'avez donc pas besoin du mot-clé return). Si vous n'utilisez pas de parenthèses, vous devez utiliser le mot-clé return.
Dans le premier exemple, les {}
sont utilisés pour identifier plusieurs lignes de code, c'est pourquoi le retour est requis afin d'obtenir autre chose que undefined
.
Dans le deuxième exemple, les {}
sont utilisés pour créer un objet.
c'est ainsi que vous renvoyez un objet dans des fonctions fléchées avec un corps concis - voir docs recherchez Renvoi de littéraux d'objet