Жизненный цикл
У Alpine есть несколько различных методов подключения к различным частям жизненного цикла. Пройдемся по наиболее полезным для ознакомления:
Инициализация элемента
Ещё один чрезвычайно полезный крючок жизненного цикла в Alpine — директива x-init
.
x-init
может быть добавлен к любому элементу на странице и будет выполнять любой JavaScript, который вы вызываете внутри него, когда Alpine начинает инициализировать этот элемент.
В дополнение к директиве Alpine автоматически вызовет любые методы init()
, хранящиеся в объекте данных. Например:
После изменения состояния
Alpine позволяет выполнять код при изменении фрагмента данных (состояния). Для такой задачи он предлагает два разных API: $watch
и x-effect
.
$watch
Как вы можете видеть выше, $watch
позволяет вам отслеживать изменения данных с помощью ключа точечной записи. Когда этот фрагмент данных изменится, Alpine вызовет переданный обратный вызов и передаст ему новое значение. вместе со старым значением до изменения.
x-effect
x-effect
использует тот же механизм, что и $watch
, но имеет совсем другое применение.
Вместо того, чтобы указывать, какой ключ данных вы хотите просмотреть, x-effect
вызывает предоставленный код и разумно ищет любые данные Alpine, используемые в нем. Теперь, когда один из этих фрагментов данных изменится, выражение x-effect
будет запущено повторно.
Вот тот же фрагмент кода из примера $watch
, переписанный с использованием x-effect
:
Теперь это выражение будет вызываться сразу и повторно вызываться каждый раз при обновлении open
.
Двумя основными поведенческими различиями этого подхода являются:
- Предоставленный код будет запущен сразу И при изменении данных (
$watch
является «ленивым» — не запускается до первого изменения данных) - Нет информации о предыдущем значении. (Обратный вызов, предоставленный
$watch
, получает как новое значение, так и старое)
Инициализация Alpine
-
alpine:init
Обеспечение выполнения небольшого количества кода после загрузки Alpine, но ДО того, как он инициализируется на странице, является необходимой задачей.
Этот хук позволяет вам регистрировать пользовательские данные, директивы, магические функции и т. д. до того, как Alpine выполнит свою работу на странице.
Вы можете подключиться к этой точке жизненного цикла, прослушивая событие, которое отправляет Alpine:
-
alpine:initialized
Alpine также предлагает перехватчик, который можно использовать для выполнения кода ПОСЛЕ завершения инициализации:
Проверка знаний
Какой из указанных вариантов синтаксиса неверен?