2016-07-06 1 views
-1

J'ai une application requirejs et je veux ajouter un module/composant de réaction dans ma page. Le module de réaction est écrit en babel/jsx. J'utilise donc le plugin de transformation AMD ET je les concat dans un seul fichier.Comment charger le module es6 dans l'architecture amd

Maintenant, bien sûr, chaque fichier js de réaction a export default class/function -part. L'un des fichiers de réaction a une fonction appelée startUp(html) qui attend un élément html en tant que paramètre. Ce paramètre html sera utilisé par l'appel ReactDOM.render.

Mon problème est que je ne peux pas accéder à la startUp méthode dans mon AMD-module:

////////////////////// REACT AND BABEL/ES6 CODE ///////////////////////// 
// react-module.js 
export default class MyReactContainer extends React.Component { 
    render() { 
     return <div>Just a DIV</div> 
    } 
} 

// react-main.js 
export default function startUp(html) { 
    ReactDOM.render(<MyReactContainer />, html); 
} 

//////////////////// EXISTING AMD MODULE ///////////////////////////////// 
// reactModuleIncluder.js 
define(['./react-main'], function(reactMain) { 

    function includeReactModule(html) { 
     reactMain(html); // Here I want to call the startUp method 
    } 

    return includeReactModule; 
}); 

Toute idée de ce que je peux faire? Ou est-ce même possible?

EDIT: Résolu le problème. Les fichiers ont été transpilés et concaténés dans un seul fichier js. Maintenant, j'ai supprimé le processus concat et cela fonctionne.

+0

Est-ce que le code React est d'abord transmis à Babel? À première vue, il semble que vous mélangez la syntaxe ES6 dans un projet ES5. –

+0

Purement du pov de mélange des codes ES6 et ES5 et RequireJS, il n'y a aucune raison que vous ne devriez pas être capable de le faire. Si vous demandez à Babel de produire des modules AMD, votre code ES6 ne se comportera pas différemment des modules écrits en ES5 dès le départ. Je ne peux rien dire sur React puisque je ne l'utilise pas. – Louis

Répondre

-1

Résolu le problème. Les fichiers ont été transpilés et concaténés dans un seul fichier js. Maintenant, j'ai supprimé le processus concat et cela fonctionne.