Отложенный вызов в Livewire
Давайте разберём такой случай. Поле поиска вызывает метод на каждую букву, и запросы сыпятся на сервер, пока человек ещё набирает слово. Нужен один вызов, когда набор на мгновение затих.
Модификатор .debounce
ждёт паузу между событиями.
Пока клавиши идут подряд,
метод не вызывается;
после короткого затишья
уходит один запрос.
Страница откроется
по адресу /posts/seek.
Давайте опишем компонент
PostSeek:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostSeek extends Component
{
public $count = 0;
public function seek()
{
$this->count++;
}
public function render()
{
return view('livewire.post-seek');
}
}
?>
Давайте свяжем поле с keydown, debounce и счётчиком вызовов:
<div>
<input
type="text"
wire:keydown.debounce.500ms="seek"
>
<div>{{ $count }}</div>
</div>
Давайте откроем страницу
по адресу /posts/seek:
<?php
Route::get('/posts/seek', function () {
return view('posts-seek');
});
?>
Давайте вставим компонент на страницу:
<x-layout>
<livewire:post-seek />
</x-layout>
Создайте компонент EmployeeSeek.
Поиск работника срабатывает
после короткой паузы
в наборе, а не на каждую
букву.