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

Директива wire:loading.remove

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

Синтаксис

<div wire:loading.remove> Content that hides during loading </div>

Пример

Давайте создадим компонент, который показывает текст, скрывающийся во время загрузки:

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $name = 'User'; public $isLoading = false; public function loadData() { $this->isLoading = true; sleep(2); $this->name = 'John Doe'; $this->isLoading = false; } public function render() { return view('livewire.user-profile'); } } ?>
<div> <div wire:loading.remove> <p>Content visible when not loading</p> <p>User name: {{ $name }}</p> </div> <div wire:loading> <p>Loading...</p> </div> <button wire:click="loadData"> Load Data </button> </div>

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

<div> <div> <p>Content visible when not loading</p> <p>User name: User</p> </div> <button> Load Data </button> </div>

Пример

Давайте скроем кнопку во время загрузки, чтобы пользователь не мог повторно её нажать:

<?php namespace AppLivewire; use LivewireComponent; class DataLoader extends Component { public $items = [1, 2, 3]; public $isProcessing = false; public function processData() { $this->isProcessing = true; sleep(3); $this->items[] = count($this->items) + 1; $this->isProcessing = false; } public function render() { return view('livewire.data-loader'); } } ?>
<div> <ul> @foreach ($items as $item) <li>{{ $item }}</li> @endforeach </ul> <button wire:click="processData" wire:loading.remove> Add Item </button> <div wire:loading> Processing... </div> </div>

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

<div> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> <div> Processing... </div> </div>

Пример

Давайте используем wire:loading.remove с модификатором .delay для более плавного скрытия:

<?php namespace AppLivewire; use LivewireComponent; class NotificationDemo extends Component { public $message = 'No notifications'; public function fetchNotifications() { sleep(1); $this->message = 'You have 5 new notifications'; } public function render() { return view('livewire.notification-demo'); } } ?>
<div> <div wire:loading.remove.delay> <p>Current status: {{ $message }}</p> </div> <div wire:loading> <p>Loading notifications...</p> </div> <button wire:click="fetchNotifications"> Check Notifications </button> </div>

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

<div> <div> <p>Current status: You have 5 new notifications</p> </div> <button> Check Notifications </button> </div>

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

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