Хук hydrate
Хук hydrate вызывается автоматически в процессе гидратации
компонента Livewire. Он срабатывает после того, как компонент был
восстановлен из хранимого состояния при каждом запросе, но до того,
как будет обработано действие. Этот метод полезен для выполнения
дополнительной инициализации, которая должна происходить при каждом
восстановлении компонента.
Синтаксис
<?php
namespace AppLivewire;
use LivewireComponent;
class Post extends Component
{
public function hydrate()
{
// Code to run after hydration
}
public function render()
{
return view('livewire.post');
}
}
?>
Пример
Давайте воспользуемся хуком hydrate для проверки
актуальности данных после гидратации компонента:
<?php
namespace AppLivewire;
use LivewireComponent;
use AppModelsPost as PostModel;
class Post extends Component
{
public $postId;
public $title;
public $content;
public $isValid = true;
public function mount($id)
{
$this->postId = $id;
$post = PostModel::find($id);
$this->title = $post->title;
$this->content = $post->content;
}
public function hydrate()
{
$post = PostModel::find($this->postId);
if (!$post || $post->is_archived) {
$this->isValid = false;
}
}
public function render()
{
return view('livewire.post');
}
}
?>
<div>
@if ($isValid)
<h2>{{ $title }}</h2>
<p>{{ $content }}</p>
@else
<p>Запись была удалена или архивирована</p>
@endif
</div>
Пример
Давайте используем хук hydrate для логирования
восстановления компонента:
<?php
namespace AppLivewire;
use LivewireComponent;
use IlluminateSupportFacadesLog;
class Logger extends Component
{
public $counter = 0;
public function hydrate()
{
Log::info('Component hydrated with counter: ' . $this->counter);
}
public function increment()
{
$this->counter++;
}
public function render()
{
return view('livewire.logger');
}
}
?>
<div>
<p>Счетчик: {{ $counter }}</p>
<button wire:click="increment">Увеличить</button>
</div>
Результат выполнения кода в логе:
"Component hydrated with counter: 0"
"Component hydrated with counter: 1"
"Component hydrated with counter: 2"