Storybook: @ storybook / html 5.0.1 no puede ejecutar scripts en la carga de la historia, también conocido como 'DOMContentLoaded' ya no ayuda

Creado en 15 mar. 2019  ·  6Comentarios  ·  Fuente: storybookjs/storybook

¡Hola amigos! Entonces, aquí está mi situación: algunos de mis componentes requieren javascript. Puedo llamar con éxito el archivo javascript en preview-head.html pero inicializarlo es un problema.

Antes de la v5.0.1 solía tener:

document.addEventListener("DOMContentLoaded", function(event) {
        /* The stuff I needed to initialise */
    }, false);

y funcionó, pero ahora no.

He estado buscando en todos sus documentos y en Stackoverflow, pero no puedo encontrar una solución a esto. Parece que debería ser algo que Storybook debería tener en cuenta.

Cualquier ayuda sería apreciada.

core has workaround question / support

Comentario más útil

@ BennyZ28 ¿cuál fue la solución?

La solución es demasiado compleja, ¿por qué no el libro de cuentos proporciona una devolución de llamada que se acaba de llamar después de que la historia se haya agregado al árbol de dom?

Todos 6 comentarios

No importa, resuelto

@ BennyZ28 ¿cuál fue la solución?

@shilman En realidad no lo he resuelto, lo hice después de demasiadas horas frente a la pantalla pero me equivoqué.

Entonces, ¡cualquier ayuda aún se agradece!

Siempre que cambie la 'página', el elemento antiguo div#root dentro de iframe se elimina y se agrega uno nuevo. Puede usar esta función y combinarla con MutationObserver para ejecutar una función cada vez que cambie la página.

Dentro de su preview-head.html , puede agregar:

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);

Para comprender cómo funciona MutationObserver , consulte la documentación de MDN .

🙏

@ BennyZ28 ¿cuál fue la solución?

La solución es demasiado compleja, ¿por qué no el libro de cuentos proporciona una devolución de llamada que se acaba de llamar después de que la historia se haya agregado al árbol de dom?

¿Fue útil esta página
0 / 5 - 0 calificaciones