Oi pessoal! Então, aqui está minha situação: alguns dos meus componentes requerem javascript. Posso chamar com sucesso o arquivo javascript em preview-head.html
, mas inicializá-lo é um problema.
Antes da v5.0.1 eu costumava ter:
document.addEventListener("DOMContentLoaded", function(event) {
/* The stuff I needed to initialise */
}, false);
e funcionou, mas agora não funciona.
Estive olhando seus documentos e o próprio Stackoverflow, mas não consigo encontrar uma solução para isso. Parece que deveria ser algo que o Storybook deveria levar em consideração.
Qualquer ajuda seria apreciada.
Esqueça, resolvido
@ BennyZ28 qual foi a solução?
@shilman Na verdade ainda não resolvi, já resolvi depois de muitas horas na frente da tela, mas me enganei.
Então, qualquer ajuda ainda será apreciada!
Sempre que a 'página' muda, o antigo div#root
elemento dentro de iframe
é removido e um novo é adicionado. Você pode usar este recurso e combiná-lo com MutationObserver
para executar uma função cada vez que a página muda.
Dentro de seu preview-head.html
, você pode adicionar:
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 entender como MutationObserver
funciona, consulte a documentação MDN .
🙏
@ BennyZ28 qual foi a solução?
A solução alternativa é muito complexa. Por que o livro de histórias não fornece um retorno de chamada apenas chamado depois que a história é adicionada à árvore dom?
Comentários muito úteis
A solução alternativa é muito complexa. Por que o livro de histórias não fornece um retorno de chamada apenas chamado depois que a história é adicionada à árvore dom?