Пропуск отрисовки в Livewire
Давайте рассмотрим ситуацию, когда кнопка на странице поста только записывает факт сохранения на сервере, а разметка после ответа всё равно пересобирается, хотя на экране ничего менять не нужно.
Метод skipRender на компоненте
говорит фреймворку не
отправлять новый HTML
в этом ответе. Состояние
на сервере уже изменилось,
а браузер оставляет
прежний вид блока.
Страница откроется
по адресу /posts/quiet.
Давайте создадим компонент
PostQuiet:
php artisan make:livewire PostQuiet --class
Давайте добавим маршрут и страницу:
<?php
Route::get('/posts/quiet', function () {
return view('posts-quiet');
});
?>
<x-layout>
<livewire:post-quiet />
</x-layout>
Давайте опишем метод mark: он запишет факт сохранения и вызовет skipRender:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostQuiet extends Component
{
public $saved = '';
public function mark()
{
$this->saved = 'Saved';
$this->skipRender();
}
public function render()
{
return view('livewire.post-quiet');
}
}
?>
Давайте выведем статичную подпись, поле и кнопку:
<div>
Still
{{ $saved }}
<button
type="button"
wire:click="mark"
>
Mark
</button>
</div>
Создайте компонент EmployeeQuiet.
Кнопка отмечает работника
на сервере и не перерисовывает
страницу.