Общее состояние между компонентами Astro
Используете компоненты фреймворков? Посмотрите, как делиться состоянием между Островками!
При создании сайта на Astro вам может потребоваться передавать данные или состояние между разными компонентами. Astro рекомендует использовать Nano Stores для хранения общего состояния на стороне клиента.
Инструкция
Заголовок раздела «Инструкция»-
Установите Nano Stores:
shell npm install nanostoresshell pnpm add nanostoresshell yarn add nanostores -
Создайте хранилище (store). В этом примере мы будем отслеживать, открыто ли диалоговое окно:
src/store.js import { atom } from 'nanostores';export const isOpen = atom(false); -
Импортируйте и используйте хранилище в тегах
<script>ваших компонентов.Компоненты
ButtonиDialogиспользуют общее состояниеisOpenдля управления отображением элемента:src/components/Button.astro <button id="openDialog">Открыть</button><script>import { isOpen } from '../store.js';function openDialog() {isOpen.set(true);}document.getElementById('openDialog').addEventListener('click', openDialog);</script>src/components/Dialog.astro <div id="dialog" style="display: none">Привет, мир!</div><script>import { isOpen } from '../store.js';isOpen.subscribe(open => {const dialog = document.getElementById('dialog');dialog.style.display = open ? 'block' : 'none';})</script>