Сохранение в снимок в Livewire
Давайте теперь посмотрим на страницу поста со счётчиком проверок. Запрос уже обработан, но зафиксировать этот факт в поле хочется именно перед отправкой состояния в браузер, а не в методе кнопки и не в render.
Метод dehydrate вызывается
перед записью снимка
состояния для ответа.
Здесь удобно подчистить
или обновить поля,
которые должны уехать
на клиент в нужном виде,
или накопить служебный
счётчик на стороне сервера.
Страница откроется
по адресу /posts/snap.
Давайте создадим компонент
PostSnap:
php artisan make:livewire PostSnap --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/snap', function () {
return view('posts-snap');
});
?>
<x-layout>
<livewire:post-snap />
</x-layout>
Давайте заведём счётчик и увеличим его в методе dehydrate:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostSnap extends Component
{
public $checks = 0;
public function dehydrate()
{
$this->checks++;
}
public function render()
{
return view('livewire.post-snap');
}
}
?>
Давайте выведем число и кнопку обновления:
<div>
{{ $checks }}
<button
type="button"
wire:click="$refresh"
>
Refresh
</button>
</div>
Создайте компонент EmployeeSnap.
Счётчик работника растёт,
когда состояние уходит в браузер.