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