Lors de la création d’un site web Astro, il se peut que vous deviez partager l’état des composants. Astro recommande l’utilisation de Nano Stores pour le stockage partagé des clients.
Méthode
Installer Nano Stores:
Créez un store. Dans cet exemple, le store indique si un dialogue est ouvert ou non :
import { atom } from ' nanostores ' ;
export const isOpen = atom ( false );
Importez et utilisez le store dans une balise <script>
dans les composants qui partageront l’état.
Les composants Button
et Dialog
suivants utilisent chacun l’état partagé isOpen
pour contrôler si une <div>
particulière est cachée ou affichée :
< button id = " openDialog " > Ouvert </ button >
< script >
import { isOpen } from ' ../store.js ' ;
// Définir le magasin à true lorsque le bouton est cliqué
function openDialog () {
isOpen . set ( true );
}
// Ajouter un écouteur d'événement au bouton
document . getElementById ( ' openDialog ' ) . addEventListener ( ' click ' , openDialog );
</ script >
< div id = " dialog " style = " display: hidden " > Hello world! </ div >
< script >
import { isOpen } from ' ../store.js ' ;
// Écouter les changements dans le store et affiche/masque le dialogue en conséquence
isOpen . subscribe ( open => {
if ( open ) {
document . getElementById ( ' dialog ' ) . style . display = ' block ' ;
} else {
document . getElementById ( ' dialog ' ) . style . display = ' none ' ;
}
})
document . getElementById ( ' openDialog ' ) . addEventListener ( ' click ' , openDialog );
</ script >
Resources
Recipes