- Опубликовано: 24 авг 2025
- 50
Справка по встроенным методам в Livewire-компонентах
Livewire-компоненты в Laravel имеют собственный жизненный цикл. Фреймворк автоматически вызывает определённые методы, если они объявлены в компоненте. Знание этих методов помогает грамотно управлять состоянием и поведением компонентов.
🔹 mount()
Когда вызывается: Один раз при инициализации компонента (при первом рендере).
Для чего использовать:
- Внедрение зависимостей через DI.
- Установка стартовых значений публичных свойств.
- Выполнение первичной логики перед показом.
public function mount(Post $post)
{
$this->post = $post;
}
🔹 boot()
Когда вызывается:
Тоже при инициализации, но до mount()
.
Для чего использовать:
- Авторизация (
$this->authorize()
), политика доступа. - Общая подготовка для всех вызовов.
public function boot(AuthManager $auth)
{
if (! $auth->check()) {
abort(403);
}
}
🔹 render()
Когда вызывается: Каждый раз, когда Livewire должен отрисовать компонент.
Для чего использовать:
- Возврат Blade-шаблона.
- Подготовка данных для отображения.
public function render()
{
return view('livewire.post-editor', [
'tags' => Tag::all(),
]);
}
🔹 hydrate()
/ dehydrate()
Когда вызывается:
-
hydrate()
— перед каждым повторным рендером (когда Livewire восстанавливает компонент из состояния). -
dehydrate()
— перед отправкой состояния на фронт.
Для чего использовать:
- Подготовка/очистка свойств.
- Временные изменения.
public function hydrate()
{
// Например, сброс временных сообщений
$this->flash = null;
}
🔹 updating($property, $value)
и updated($property, $value)
Когда вызываются:
-
updating
— перед изменением свойства. -
updated
— после изменения свойства.
Для чего использовать:
- Валидация «на лету».
- Реакция на изменения конкретного свойства.
public function updatingEmail($value)
{
if (! str_contains($value, '@')) {
$this->addError('email', 'Неверный email');
}
}
public function updatedPassword()
{
$this->passwordStrength = $this->checkStrength($this->password);
}
🔹 updatingFoo()
/ updatedFoo()
Когда вызываются:
Если у тебя есть свойство $foo
, то Livewire автоматически вызовет:
-
updatingFoo($value)
— перед изменением$foo
. -
updatedFoo($value)
— после изменения$foo
.
🔹 updatingFooBar()
и updatedFooBar()
Фишка:
Работает и для вложенных свойств. Если у тебя есть $foo['bar']
, то сработают методы:
-
updatingFooBar($value)
-
updatedFooBar($value)
🔹 updating()
и updated()
(глобальные)
Можно объявить «глобальные хуки» без имени свойства, тогда они будут срабатывать для любого свойства.
public function updating($name, $value)
{
logger("Изменяется $name на $value");
}
🔹 updatingFoo
и updatedFoo
vs rules
Хорошо помнить:
- Для «быстрой валидации» — хуки
updating*/updated*
. - Для финальной валидации перед действием —
rules
+$this->validate()
.
🔹 Жизненный цикл в порядке вызова
Чтобы было проще запомнить, вот схема:
-
boot()
-
mount()
-
render()
(первый раз) - … (пользователь взаимодействует, что-то меняется) …
-
hydrate()
-
updating*()
→ изменение свойства →updated*()
-
dehydrate()
-
render()
(снова)
📌 Итог
Встроенные методы Livewire позволяют гибко управлять состоянием компонента и его поведением:
-
boot()
/mount()
— инициализация. -
render()
— отрисовка. -
hydrate()
/dehydrate()
— восстановление и подготовка состояния. -
updating\*()
/updated\*()
— реакция на изменения свойств.
Используй их как хуки жизненного цикла — и код в компонентах будет чище и предсказуемее.
Была статья полезной: