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