Desidero essere in grado di raggruppare la mia app React con Webpack in modo tale che copie distribuite immesse in un CDN possano essere originate, richiamate e inizializzate con un gruppo di configurazioni rilevanti per un cliente.Scrittura plugin embeddable per Javascript con React & Webpack
Dopo aver letto this e this, Sto installando il mio file di entrata webpack come segue:
// ... React requires etc.
(() => {
this.MyApp = (config) => {
// some constructor code here
}
MyApp.prototype.init =() => {
ReactDOM.render(<MyReactApp config={MyApp.config} />, someSelector);
}
})();
L'idea è che nel mio cliente, posso fare qualcosa di simile al seguente:
<script src="./bundle.js" type="text/javascript"></script>
<script type="text/javascript">
MyApp.init({
some: "config"
});
</script>
E la mia funzione MyApp#init
renderà la mia app React all'interno di un contenitore sul client.
Sto pensando a questo nel modo giusto? C'è un modo più semplice o più efficace per fare questo?
Il mio errore è Uncaught TypeError: Cannot set property 'MyApp' of undefined
, poiché this
all'interno dell'IFE è undefined
. Mi piacerebbe davvero capire sia il motivo per cui ciò sta accadendo sia i consigli su come risolverlo.
Grazie in anticipo!
Ciao, mattsch. Questa è una bella soluzione. L'unica domanda che ho è come potrei controllare che il widget sia integrato sul sito web del cliente.Quindi diciamo di avere un'app e costruire un widget. Farei il check-in dell'app che un utente (tramite ID o nome host) ha incorporato un widget sul proprio sito. –
@ To_wave Suppongo che come parte di una funzione 'init' è possibile eseguire il ping di una richiesta sul server con i dettagli del client - che potrebbe funzionare? – mattsch
Ci ho pensato, ma quella soluzione non mi permette di controllare se il client ha cancellato un widget dal loro sito web. Quindi, con la funzione callback, l'unico controllo possibile è il widget integrato, ma non rimosso. –