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

Директива wire:click.async

Директива wire:click.async вешается на HTML-элемент и вызывает указанный метод компонента при клике асинхронно. В отличие от обычной wire:click, данная директива не ждёт ответа от сервера после выполнения метода. Это полезно для фоновых задач, логирования или отправки событий, когда не требуется обновление интерфейса.

Синтаксис

<button wire:click.async="methodName"> text </button>

Пример

Давайте увеличим число $num по клику на кнопку без обновления шаблона:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function inc() { $this->num++; } public function render() { return view('livewire.counter'); } } ?>
<button wire:click.async="inc"> + </button> <span>{{ $num }}</span>

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

"num is 0"

Несмотря на то, что метод inc увеличил свойство $num, на экране осталось прежнее значение, так как шаблон не обновлялся.

Пример

Давайте отправим данные на сервер для логирования без обновления страницы:

<?php namespace AppLivewire; use LivewireComponent; use IlluminateSupportFacadesLog; class Logger extends Component { public $message = ''; public function logAction($text) { Log::info('User action: ' . $text); } public function render() { return view('livewire.logger'); } } ?>
<button wire:click.async="logAction('clicked')"> Log Click </button>

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

"Action logged successfully"

Клик по кнопке асинхронно отправит запрос на сервер, но интерфейс останется без изменений.

Пример

Давайте выполним несколько асинхронных операций с разными параметрами:

<?php namespace AppLivewire; use LivewireComponent; use IlluminateSupportFacadesCache; class Stats extends Component { public $counter = 0; public function increment($value) { Cache::increment('async_counter', $value); } public function render() { return view('livewire.stats'); } } ?>
<button wire:click.async="increment(1)"> +1 </button> <button wire:click.async="increment(5)"> +5 </button> <button wire:click.async="increment(10)"> +10 </button> <span>Current: {{ $counter }}</span>

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

"counter is 0"

Все клики будут обработаны асинхронно, значение $counter на экране не изменится, но в кеше будут накапливаться данные.

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

  • директиву wire:click,
    которая вызывает метод с обновлением шаблона
  • директиву wire:click.once,
    которая вызывает метод только один раз
  • директиву wire:click.delay,
    которая задерживает вызов метода
  • директиву wire:click.prevent,
    которая отменяет действие браузера по умолчанию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить