РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
22 of 274 menu

Директива wire:keydown.debounce

Директива wire:keydown.debounce является модификатором директивы wire:keydown. Она добавляет задержку перед вызовом метода компонента при вводе текста в поле ввода. В значение передается время задержки в миллисекундах или используется значение по умолчанию 150 мс. Это позволяет избежать частых вызовов метода при быстром наборе текста пользователем.

Синтаксис

<input type="text" wire:keydown.debounce="methodName" />
<input type="text" wire:keydown.debounce.500ms="methodName" />

Пример с задержкой по умолчанию

Давайте создадим поле ввода, которое при вводе обновляет свойство компонента с задержкой 150 мс:

<?php namespace AppLivewire; use LivewireComponent; class SearchComponent extends Component { public $search = ''; public $result = ''; public function updateSearch() { $this->result = "Searching for: " . $this->search; } public function render() { return view('livewire.search-component'); } } ?>
<div> <input type="text" wire:model="search" wire:keydown.debounce="updateSearch" placeholder="Type something..." /> <p>Result: {{ $result }}</p> </div>

Результат выполнения кода:

<div> <input type="text" placeholder="Type something..." /> <p>Result: Searching for: test</p> </div>

Пример с указанием времени задержки

Давайте укажем задержку в 500 мс для обновления списка при вводе:

<?php namespace AppLivewire; use LivewireComponent; class UserSearch extends Component { public $query = ''; public $users = ['John', 'Jane', 'Bob', 'Alice']; public $filtered = []; public function searchUsers() { $this->filtered = array_filter($this->users, function($user) { return stripos($user, $this->query) !== false; }); } public function render() { return view('livewire.user-search'); } } ?>
<div> <input type="text" wire:model="query" wire:keydown.debounce.500ms="searchUsers" placeholder="Search users..." /> <ul> @foreach($filtered as $user) <li>{{ $user }}</li> @endforeach </ul> </div>

Результат выполнения кода:

<div> <input type="text" placeholder="Search users..." /> <ul> <li>John</li> <li>Jane</li> </ul> </div>

Пример с передачей параметров

Давайте передадим параметр в метод при использовании задержки:

<?php namespace AppLivewire; use LivewireComponent; class DataFetcher extends Component { public $input = ''; public $items = []; public function fetchData($limit) { $res = []; for ($i = 1; $i <= $limit; $i++) { $res[] = $this->input . '-' . $i; } $this->items = $res; } public function render() { return view('livewire.data-fetcher'); } } ?>
<div> <input type="text" wire:model="input" wire:keydown.debounce.300ms="fetchData(5)" placeholder="Enter text..." /> <ul> @foreach($items as $item) <li>{{ $item }}</li> @endforeach </ul> </div>

Результат выполнения кода:

<div> <input type="text" placeholder="Enter text..." /> <ul> <li>abc-1</li> <li>abc-2</li> <li>abc-3</li> <li>abc-4</li> <li>abc-5</li> </ul> </div>

Смотрите также

  • директиву wire:keydown,
    которая вызывает метод при нажатии клавиши
  • директиву wire:keydown.enter,
    которая реагирует только на клавишу Enter
  • директиву wire:keyup,
    которая вызывает метод при отпускании клавиши
  • директиву wire:model.live,
    которая обновляет свойство компонента при вводе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить