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.
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. –
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