События в Inertia
Ссылка, форма и программный визит
через router каждый раз
отправляют запрос на Laravel
и ждут ответ с новой страницей
или обновлёнными пропсами.
Приложению часто нужно отреагировать
на эти шаги не в одном компоненте,
а сразу во всём клиенте: показать
ожидание, записать аналитику,
поймать flash-сообщение с сервера
или сбросить индикатор после любого
исхода запроса.
Для одного визита уже есть
колбэки в третьем аргументе
методов router: они срабатывают
только у этого вызова и живут
рядом с кодом кнопки или формы.
Inertia v3 добавляет отдельную
систему событий: метод
on у объекта router
регистрирует слушатель на имя
события, и тот вызывается
при каждом подходящем запросе,
откуда бы визит ни стартовал.
Такие слушатели удобно вешать
при запуске клиента или в корневом
макете: один раз настроили реакцию
на start, success,
finish, navigate
или flash, и дальше
не дублируют логику в каждой
странице. Flash-сообщение
в основном учебнике уже выводили
из page.flash в шаблоне;
здесь тот же ответ сервера
можно обработать событием
flash в одном месте,
а на клиенте иногда достаточно
метода flash у router
без нового запроса.
Со всем этим мы и будем разбираться в рамках данного раздела.