Hallo Leute! Hier ist meine Situation: Einige meiner Komponenten erfordern Javascript. Ich kann die Javascript-Datei erfolgreich in preview-head.html
aufrufen, aber das Initialisieren ist ein Problem.
Vor v5.0.1 hatte ich:
document.addEventListener("DOMContentLoaded", function(event) {
/* The stuff I needed to initialise */
}, false);
und es hat funktioniert, aber jetzt nicht.
Ich habe Ihre Dokumente und Stackoverflow selbst durchgesehen, aber ich kann keine Lösung dafür finden. Es fühlt sich so an, als ob es etwas sein sollte, das Storybook berücksichtigen sollte.
Jede Hilfe wäre dankbar.
Egal, gelöst
@ BennyZ28 was war die Lösung?
@shilman Eigentlich habe ich es nicht gelöst, obwohl ich es nach zu vielen Stunden vor dem Bildschirm hatte, aber ich habe mich geirrt.
Also, jede Hilfe noch geschätzt!
Immer wenn sich die 'Seite' ändert, wird das alte div#root
-Element im iframe
entfernt und ein neues hinzugefügt. Sie können diese Funktion verwenden und mit MutationObserver
kombinieren, um
In Ihrem preview-head.html
können Sie hinzufügen:
function runOnInit() {
console.log('Init')
}
function runOnPageChange() {
console.log('Page has changed!')
}
document.addEventListener('DOMContentLoaded', function() {
runOnInit();
const callback = function(mutationsList) {
for (let i = 0, len = mutationsList.length; i < len; i++) {
if (mutationsList[i].type == 'childList') {
runOnPageChange();
break;
}
}
};
const observer = new MutationObserver(callback);
const config = { childList: true, subtree: false };
observer.observe(document.getElementById('root'), config);
}, false);
Informationen zur Funktionsweise von MutationObserver
finden Sie in der MDN-Dokumentation .
🙏
@ BennyZ28 was war die Lösung?
Die Problemumgehung ist zu komplex. Warum bietet das Storybook nicht einen Rückruf, der nur aufgerufen wird, nachdem die Story zum Dom-Baum hinzugefügt wurde?
Hilfreichster Kommentar
Die Problemumgehung ist zu komplex. Warum bietet das Storybook nicht einen Rückruf, der nur aufgerufen wird, nachdem die Story zum Dom-Baum hinzugefügt wurde?