2016-07-06 29 views
-1
Laden

Ich habe eine requirejs App und ich möchte ein Reagieren Modul/Komponente an meine Seite anhängen. Das Reaktionsmodul wird in babel/jsx geschrieben. Also benutze ich das AMD-Transformations-Plug-in UND ich konvertiere sie in eine einzige Datei.Wie es6 Modul in Amd Architektur

Jetzt natürlich jede reactive js-Datei hat export default class/function-Teil. Eine der reaktiven Dateien hat eine Funktion namens startUp(html), die ein html-Element als Parameter erwartet. Dieser HTML-Parameter wird von ReactDOM.render Aufruf verwendet werden.

Mein Problem ist, dass ich nicht die startup-Methode in meinem AMD-Modul zugreifen kann:

Jede Idee, was
////////////////////// 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; 
}); 

ich tun kann? Oder ist das überhaupt möglich?

EDIT: Das Problem gelöst. Dateien wurden in einer einzigen js-Datei transpiliert und verkettet. Jetzt habe ich den Concat-Prozess entfernt und es funktioniert.

+0

Wird der React-Code zuerst mit Babel transpiliert? Auf den ersten Blick scheint es, als würden Sie die ES6-Syntax in ein ES5-Projekt mischen. –

+0

Nur aus der Kombination von ES6- und ES5-Code und RequireJS gibt es keinen Grund, warum Sie es nicht tun sollten. Wenn Sie Babel anweisen, AMD-Module zu produzieren, wird sich Ihr ES6-Code von Anfang an nicht anders verhalten als Module, die in ES5 geschrieben wurden. Ich kann nichts über React sagen, da ich es nicht benutze. – Louis

Antwort

-1

Das Problem wurde behoben. Dateien wurden in einer einzigen js-Datei transpiliert und verkettet. Jetzt habe ich den Concat-Prozess entfernt und es funktioniert.