Meu objetivo com vue.js é alterar o HTML antes que apareça um prompt de confirmação.
index.html
<div id='vueexample'>
<button @click="colorFunction()">Click me!</button>
<p v-if="userIsDeciding" style="background-color: yellow;">The user has to decide.</p>
</div>
<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js'></script>
<script>
new Vue({
el: '#vueexample',
data: { userIsDeciding: false },
methods: {
colorFunction: function() {
this.userIsDeciding = true;
if(confirm("please confirm")){
//some stuff
}
this.userIsDeciding = false;
}
}
});
</script>
O problema: p-tag não é mostrado antes do prompt de confirmação.
Minha pergunta: como posso fazer com que o p-tag seja exibido antes do prompt de confirmação?
Qualquer ajuda é apreciada ❤️
Solução
Muitas pessoas já lidaram com isso antes, talvez uma das respostas mais relevantes para isso – que é melhor do que
setTimeout(..., 0)
– seja um pacote.Recebemos feedback positivo sobre o uso do pacote mencionado aqui, então pensei em verificar como ele funciona. É bem simples.
doubleRequestAnimationFrame()
método -vue-force-next-tick\src\index.js
Na verdade, o conceito básico é incorporar a função nativa do JavaScript requestAnimationFrame() dentro de si, que parece sempre esperar a atualização da renderização em todos os casos.
O criador da função nomeou esta função
forceNextTick()
, que pode ser chamada sem uma função de retorno de chamada.Se não houver retorno de chamada, ele invocará o
doubleRequestAnimationFrame()
como um arquivonew Promise
.Experimente o pacote ou dê uma olhada na implementação sem pacote da solução que ele aplica :
Mais Informações
window.requestAnimationFrame()
método - MDN DocsVocê pode tentar com a função setTimeout :