- Опубликовано: 24 авг 2025
- 210
Справка по встроенным методам в 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\*()— реакция на изменения свойств.
Используй их как хуки жизненного цикла — и код в компонентах будет чище и предсказуемее.
Была статья полезной: