◆ Portail Antalaha

Bibliothèques › Alpine.js

x-cloak

Parfois, lorsque vous utilisez AlpineJS pour une partie de votre gabarit, un « clignotement » peut se produire : vous apercevez votre gabarit non initialisé après le chargement de la page, mais avant le chargement d'Alpine.

x-cloak répond à ce problème en masquant l'élément auquel il est attaché jusqu'à ce qu'Alpine soit entièrement chargé sur la page.

Pour que x-cloak fonctionne, vous devez toutefois ajouter le CSS suivant à la page.

[x-cloak] { display: none !important; }

L'exemple suivant masque la balise <span> jusqu'à ce que son x-show soit explicitement évalué à vrai, évitant ainsi tout « clignotement » de l'élément masqué à l'écran pendant le chargement d'Alpine.

<span x-cloak x-show="false">Ceci ne « clignotera » jamais à l'écran</span>

x-cloak ne fonctionne pas uniquement sur les éléments masqués par x-show ou x-if : il garantit aussi que les éléments contenant des données restent masqués tant que ces données ne sont pas correctement définies. L'exemple suivant masque la balise <span> jusqu'à ce qu'Alpine ait défini son contenu textuel avec la propriété message.

<span x-cloak x-text="message"></span>

Lorsque Alpine se charge sur la page, il retire l'attribut x-cloak de l'élément, ce qui supprime aussi le display: none; appliqué par le CSS et rend donc l'élément visible.

Alternative à la syntaxe globale

Si vous souhaitez obtenir le même comportement tout en évitant d'inclure une feuille de style globale, vous pouvez utiliser l'astuce suivante, ingénieuse mais avouons-le un peu étrange :

<template x-if="true">
    <span x-text="message"></span>
</template>

Cela atteint le même objectif que x-cloak, simplement en tirant parti du fonctionnement de x-if.

Comme les éléments <template> sont « masqués » par défaut dans les navigateurs, vous ne verrez pas le <span> tant qu'Alpine n'aura pas eu le temps d'évaluer le x-if="true" et de l'afficher.

Là encore, cette solution ne convient pas à tout le monde, mais elle mérite d'être mentionnée pour des cas particuliers.

Traduction française de la documentation officielle d'Alpine.js (licence MIT) – https://alpinejs.dev