Состояние
Состояние (данные JavaScript, изменения которых Alpine отслеживает) лежит в основе всего, что вы делаете в Alpine. Вы можете предоставить локальные данные для фрагмента HTML или сделать их глобально доступными для использования в любом месте страницы, используя x-data
или Alpine.store()
соответственно.
Локальное состояние
Alpine позволяет вам объявлять состояние блока HTML в одном атрибуте x-data
прямо в разметке.
Вот базовый пример:
Теперь любой другой синтаксис Alpine в этом элементе или внутри него сможет получить доступ к open
. И, как вы могли догадаться, когда open
меняется по какой-либо причине, всё, что от этого зависит, будет реагировать автоматически.
Вложенные данные
Данные в Alpine могут быть вложенными. Например, если у вас есть два элемента с атрибутом x-data
(один внутри другого), вы можете получить доступ к данным родительского элемента изнутри дочернего элемента.
Это похоже на определение области действия в самом JavaScript (код внутри функции может обращаться к переменным, объявленным вне этой функции).
Как вы уже догадались, если у дочернего элемента есть свойство данных, совпадающее с именем родительского свойства, дочернее свойство будет иметь приоритет.
Одноэлементные данные
Хотя некоторым это может показаться очевидным, стоит отметить, что данные Alpine можно использовать в одном и том же элементе. Например:
Alpine без данных
Иногда вам может потребоваться использовать функциональность Alpine, но вам не нужны реактивные данные. В этих случаях вы можете полностью отказаться от передачи выражения в x-data
. Например:
Повторно используемые данные
При использовании Alpine у вас может возникнуть необходимость повторно использовать фрагмент данных и/или соответствующий ему шаблон.
Если вы используете серверную среду, такую как Rails или Laravel, Alpine сначала рекомендует вам извлечь весь блок HTML в часть шаблона или включить его.
Если по какой-то причине это не идеально для вас или вы не используете внутреннюю среду шаблонов, Alpine позволяет вам глобально зарегистрировать и повторно использовать часть данных компонента, используя Alpine.data(...)
.
Теперь, когда вы зарегистрировали данные «dropdown», вы можете использовать их в своей разметке в любом количестве мест:
Глобальное состояние
Если вы хотите сделать некоторые данные доступными для каждого компонента на странице, вы можете сделать это, используя функцию «глобального хранилища» Alpine.
Вы можете зарегистрировать хранилище, используя Alpine.store(...)
, и ссылаться на него с помощью магического метода $store()
.
Давайте посмотрим на простой пример. Сначала зарегистрируем хранилище глобально:
Теперь мы можем получить доступ к его данным или изменить их из любого места на нашей странице:
Проверка знаний
Какой вариант использования x-data
правильный?