Chcę móc połączyć moją aplikację React z Webpack tak, aby rozproszone kopie umieszczone na CDN mogły być pozyskiwane, wywoływane i inicjowane za pomocą zestawu konfiguracji istotnych dla klienta.Pisanie wbudowanej wtyczki Javascript z React & Webpack
Po przeczytaniu this i this, jestem skonfigurowaniu pliku wejścia WebPACK następująco:
// ... React requires etc.
(() => {
this.MyApp = (config) => {
// some constructor code here
}
MyApp.prototype.init =() => {
ReactDOM.render(<MyReactApp config={MyApp.config} />, someSelector);
}
})();
Pomysł jest, że w moim klientem, mogę zrobić coś jak następuje:
<script src="./bundle.js" type="text/javascript"></script>
<script type="text/javascript">
MyApp.init({
some: "config"
});
</script>
I moja funkcja MyApp#init
spowoduje zrenderowanie aplikacji React wewnątrz jakiegoś kontenera na kliencie.
Czy o tym myślę we właściwy sposób? Czy istnieje prostszy lub bardziej skuteczny sposób na poradzenie sobie z tym?
Mój błąd: Uncaught TypeError: Cannot set property 'MyApp' of undefined
, ponieważ this
wewnątrz IIFE jest undefined
. Naprawdę chciałbym zrozumieć zarówno dlaczego tak się dzieje, jak i porady, jak to naprawić.
Z góry dziękuję!
Cześć, mattsch. To dobre rozwiązanie. Mam tylko pytanie, w jaki sposób mogę sprawdzić, czy widget jest zintegrowany z witryną klienta.Powiedzmy, że masz aplikację i zbudujesz widżet. Sprawdziłbym, czy jakiś użytkownik (według id lub nazwy hosta) umieścił widżet w swojej witrynie. –
@To_wave Domyślam się, że jako część funkcji 'init' możesz wysłać zapytanie do serwera z danymi klienta - to może zadziałać? – mattsch
Myślałem o tym, ale to rozwiązanie nie pozwala mi sprawdzić, czy klient usunął widżet z ich strony internetowej. Tak więc z callbackiem mogę tylko sprawdzić, czy widget jest zintegrowany, ale nie został usunięty. –