In meinem aktuellen Reagieren + React-Router-Setup einige jQuery Dinge meine Komponente Importe (owl.carousel und magnific Popup)
Ich möchte den Code sauber zu halten, so dass die äußeren Merkmale sind in separaten Datei gespeichert. Der folgende Code funktioniert nur, wenn die Seite mit einer direkten URL geladen wurde und funktioniert nicht, wenn Sie die App vor- und zurück navigieren. Also alles innerhalb $(document).ready
wird nur mit direkter Verbindung ausgelöst.
import '../jQuery/carousel.js';
$(document).ready(function(){
$('.owl-carousel').owlCarousel({
});
$('.popup-gallery').magnificPopup({
});
});
Wie verwalte ich dieses Problem? Ich habe versucht, componentWillMount und wickeln .ready() mit einigen benutzerdefinierte Funktion zu verwenden, aber ich kann nicht updateJs()
class MyComponent extends Component {
componentWillMount() {
updateJs();
}
}
Ich schätze Ihre Antwort und es funktioniert natürlich. Aber so sieht Code schwer lesbar aus. Im aktuellen Projekt sind es 100 Zeilen jQuery und 20 Zeilen jsx, die ich gerne trennen würde. Weißt du irgendeinen Weg, wie ich Funktion von .js exportieren kann, einen Import zur Komponente mache und eine Funktion wie callScripts() oder refresh() referenziere? –
Eine Möglichkeit besteht darin, Ihre 'jQuery'-Funktion dem' window'-Objekt zuzuordnen, auf das in der 'react'-Komponente zugegriffen werden soll. Und noch etwas versuchen, Bibliotheken als Alternativen zu Ihren 'jQuery'-Bibliotheken zu" reagieren ". –