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

Директива @placeholder

Директива @placeholder используется в шаблоне Livewire для отображения временного содержимого на время, пока компонент загружается и инициализируется. Она применяется непосредственно к элементу, который будет заменен после того, как Livewire завершит рендеринг компонента. Это особенно полезно для создания индикаторов загрузки или скелетонов, чтобы улучшить пользовательский опыт в момент начальной загрузки страницы или при переключении между компонентами.

Директива @placeholder может принимать параметр, в котором можно указать содержимое для отображения во время загрузки. Если содержимое представляет собой строку, оно будет интерпретировано как HTML. Также можно использовать синтаксис с фигурными скобками @placeholder(['id' => 'loading']) для передачи дополнительных атрибутов элементу.

Синтаксис

@placeholder Содержимое для отображения во время загрузки @endplaceholder

Пример

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

<?php namespace AppLivewire; use LivewireComponent; class UserProfile extends Component { public $userName = ''; public $userEmail = ''; public function mount() { sleep(2); $this->userName = 'John Doe'; $this->userEmail = 'john@example.com'; } public function render() { return view('livewire.user-profile'); } } ?>
<div> @placeholder <div style="border: 1px solid #ccc; padding: 15px;"> <p>Загрузка данных пользователя...</p> <div style="width: 200px; height: 20px; background: #f0f0f0;"></div> <div style="width: 150px; height: 20px; background: #f0f0f0; margin-top: 5px;"></div> </div> @endplaceholder <div> <h3>{{ $userName }}</h3> <p>{{ $userEmail }}</p> </div> </div>

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

<div> <div> <h3>John Doe</h3> <p>john@example.com</p> </div> </div>

Пример с атрибутами

В директиву можно передать массив атрибутов для элемента-контейнера:

<div> @placeholder(['id' => 'loading-container', 'class' => 'skeleton-wrapper']) <div class="skeleton"> <div class="skeleton-line"></div> <div class="skeleton-line"></div> </div> @endplaceholder <div id="user-content"> <h3>{{ $userName }}</h3> <p>{{ $userEmail }}</p> </div> </div>

Пример с использованием вложенных директив

Директиву @placeholder можно комбинировать с другими директивами для создания более сложных состояний загрузки:

<div> @placeholder <div wire:key="loading-state"> <p>Идет загрузка профиля...</p> <div class="spinner"></div> </div> @endplaceholder <div wire:key="profile-content"> <h3>{{ $userName }}</h3> <p>{{ $userEmail }}</p> <button wire:click="refresh">Обновить</button> </div> </div>

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

  • директиву @livewire,
    которая позволяет встраивать компоненты Livewire в шаблон
  • директиву @this,
    которая предоставляет доступ к JavaScript-объекту компонента
  • директиву @script,
    которая позволяет выполнять JavaScript-код в контексте компонента
  • директиву @entangle,
    которая связывает свойство компонента с Alpine.js
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить