2017-08-27 2 views
1

J'essaie de comprendre après la déclaration d'exportation:Export d'une fonction parenthèse dans ES6

export default (
    <Route path="/" component={App}> 
     <IndexRoute component={HomePage} /> 
     <Route path="about" component={AboutPage}/> 
    </Route> 
); 

Par définition, la déclaration d'exportation est utilisé pour exporter des fonctions, des objets ou des valeurs primitives.

syntaxe différente:

export { name1, name2, …, nameN }; 
export { variable1 as name1, variable2 as name2, …, nameN }; 
export let name1, name2, …, nameN; // also var, function 
export let name1 = …, name2 = …, …, nameN; // also var, const 

export default expression; 
export default function (…) { … } // also class, function* 
export default function name1(…) { … } // also class, function* 
export { name1 as default, … }; 

export * from …; 
export { name1, name2, …, nameN } from …; 
export { import1 as name1, import2 as name2, …, nameN } from …; 

Parmi toutes les alternatives possibles, je ne suis pas en mesure de raconter comment par défaut d'exportation (..); entrer.

Je suppose qu'il serait l'exportation d'une fonction anonyme.

+0

C'est une expression entre parenthèses. – Pointy

Répondre

4

Cette règle s'applique:

export default expression; 

(...) est le grouping operator, qui est une expression. Il évalue simplement le résultat de l'expression qu'il contient. Vous l'avez sûrement déjà vu. Par exemple:

(20 + 1) * 2 

Certaines constructions nécessitent une expression à démarrer sur la même ligne.Dans l'exemple suivant, la fonction retourne undefined, parce que l'expression doit commencer dans la même ligne que le return:

function foo() { 
 
    return 
 
    21 + 1; 
 
} 
 

 
console.log(foo());

Avec l'opérateur de regroupement, nous pouvons faire exactement cela: Démarrez le expression sur la même ligne, mais mettre la partie principale sur la ligne suivante, pour des raisons stylistiques:

function foo() { 
 
    return (
 
    21 + 1 
 
); 
 
} 
 

 
console.log(foo());


Je ne sais pas si vous utilisez l'opérateur de regroupement est nécessaire dans le cas export default, mais il serait trivial de savoir (exécuter le code avec et sans lui).

Même s'il n'est pas requis, il ne modifie pas le résultat de l'expression. Parfois, il est simplement utilisé pour être plus agréable visuellement ou plus facile à lire.

+0

Merci @Felix. Maintenant, cela a du sens. – Rohit

0

Lorsque vous export default vous donnez à l'utilisateur la possibilité de import NAME from 'module' où l'NAME est quelque chose que l'utilisateur peut choisir.
Peu importe le nom que vous avez choisi de donner à ce que vous avez exporté, car il s'agit de la valeur par défaut exportée.

À cause de cela, l'utilisateur peut faire:

import MyRouter from 'route.js'; 

Et ce sera exactement la même que

import Routing from 'route.js'; 

Vous pouvez faire

export default myvar = (<Route... 

Et ce serait exactement le même que

export default someothervar = (<Route... 

Notez que lorsque vous parlez des exportations nommées il ne importe

Si ce n'était pas la valeur par défaut - mais valeur nommée - il importe, parce que le import se fait par nom:

export {var1, var2, var3} 

doit être importé comme

import {var1, var2, var3} from 'myvars.js'