Fonction de flèche sans accolades

Je suis nouveau à ES6 et à React et je continue à voir des fonctions de flèche. Pourquoi est-ce que certaines fonctions de la flèche utilisent des accolades lorsque la flèche en graisse et certains utilisent des parenthèses? Par exemple:

const foo = (params) => ( <span> <p>Content</p> </span> ); 

contre.

 const handleBar = (e) => { e.preventDefault(); dispatch('logout'); }; 

Merci pour toute aide!

Les parenthèses renvoient une valeur unique, les accolades exécutent plusieurs lignes de code.

Votre exemple semble déroutant car il utilise JSX qui ressemble à plusieurs "lignes", mais qui vient tout simplement d'être compilé sur un seul "élément".

Voici d'autres exemples qui font la même chose:

 const a = (who) => "hello " + who + "!"; const b = (who) => ( "hello " + who + "!" ); const c = (who) => { return "hello " + who + "!"; }; 

Vous verrez également des parenthèses autour des littéraux d'objets, car c'est un moyen d'éviter que l'analyseur le traite comme un bloc de code:

 const x = () => {} // Does nothing const y = () => ({}) // returns an object