Compartilhe estado entre componentes Astro
Usando componentes de um framework? Veja como compartilhar estado entre Ilhas!
Enquanto constrói um website Astro, você pode precisar compartilhar estado entre componentes. Astro recomenda o uso de Nano Stores para armazenamento compartilhado no cliente.
Receita
Seção intitulada Receita- Instale Nano Stores:
npm install nanostorespnpm add nanostoresyarn add nanostores- Crie uma store. Nesse exemplo, a store irá rastrear se uma caixa de diálogo está aberta ou não:
import { atom } from 'nanostores';
export const estaAberto = atom(false);- Importe e use a store em uma tag
<script>nos componentes que irão compartilhar estado.
Os componentes Botao e Dialogo a seguir usam o estado compartilhado estaAberto para controlar se uma <div> em particular está oculta ou visível:
<button id="abrirDialogo">Abrir</button>
<script> import { estaAberto } from '../store.js';
// Definir a store para true quando o botão for clicado function abrirDialogo() { estaAberto.set(true); }
// Adicionar um listener de evento ao botão document.getElementById('abrirDialogo').addEventListener('click', abrirDialogo);</script><div id="dialogo" style="display: hidden">Olá mundo!</div>
<script> import { estaAberto } from '../store.js';
// Ouvir mudanças na store, e mostrar/ocultar a caixa de diálogo de acordo estaAberto.subscribe(open => { if (open) { document.getElementById('dialogo').style.display = 'block'; } else { document.getElementById('dialogo').style.display = 'none'; } })</script>