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

Директива wire:click.preserve-scroll

Директива wire:click.preserve-scroll является модификатором директивы wire:click и предназначена для сохранения текущей позиции прокрутки страницы или контейнера после выполнения действия. По умолчанию при клике и обновлении компонента Livewire сбрасывает прокрутку к началу страницы. Модификатор .preserve-scroll отключает это поведение.

Синтаксис

<button wire:click.preserve-scroll="methodName"> text </button>

Пример

Давайте реализуем компонент со списком и кнопкой добавления элемента. При добавлении прокрутка страницы не должна сбрасываться:

<?php namespace App\Livewire; use Livewire\Component; class ListComponent extends Component { public $items = ['a', 'b', 'c']; public function addItem() { $this->items[] = 'new'; } public function render() { return view('livewire.list-component'); } } ?>
<div> <button wire:click.preserve-scroll="addItem"> Add item </button> <ul> @foreach ($items as $item) <li>{{ $item }}</li> @endforeach </ul> </div>

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

<button> Add item </button> <ul> <li>a</li> <li>b</li> <li>c</li> </ul>

После нажатия на кнопку элемент 'new' добавится в конец списка, а позиция прокрутки останется прежней.

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

Передадим в метод строку для добавления в список:

<?php namespace App\Livewire; use Livewire\Component; class ListComponent extends Component { public $items = ['a', 'b', 'c']; public function addItem($value) { $this->items[] = $value; } public function render() { return view('livewire.list-component'); } } ?>
<div> <button wire:click.preserve-scroll="addItem('d')"> Add 'd' </button> <ul> @foreach ($items as $item) <li>{{ $item }}</li> @endforeach </ul> </div>

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

<button> Add 'd' </button> <ul> <li>a</li> <li>b</li> <li>c</li> <li>d</li> </ul>

Пример с несколькими модификаторами

Модификатор .preserve-scroll можно комбинировать с другими модификаторами, например с .prevent:

<button wire:click.prevent.preserve-scroll="addItem"> Add item </button>

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

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