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

Директива @teleport

Директива @teleport позволяет переместить фрагмент шаблона в другое место DOM-дерева, сохраняя при этом реактивность и состояние компонента. В значение передаётся CSS-селектор целевого контейнера, куда будет перемещён содержимый блок. После перемещения Livewire продолжает отслеживать изменения внутри телепортированного фрагмента.

Синтаксис

@teleport("body") <div> Content to teleport </div> @endteleport

Пример

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

<?php namespace AppLivewire; use LivewireComponent; class TeleportExample extends Component { public $message = 'Teleported message'; public function updateMessage() { $this->message = 'Updated teleported message'; } public function render() { return view('livewire.teleport-example'); } } ?>
<div> <button wire:click="updateMessage"> Update message </button> @teleport("body") <div id="teleported-block"> {{ $message }} </div> @endteleport </div>

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

<div> <button> Update message </button> </div> ... <div id="teleported-block"> Teleported message </div>

Пример

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

<?php namespace AppLivewire; use LivewireComponent; class TeleportMultiple extends Component { public $items = [1, 2, 3, 4, 5]; public function addItem() { $this->items[] = count($this->items) + 1; } public function render() { return view('livewire.teleport-multiple'); } } ?>
<div> <button wire:click="addItem"> Add item </button> @teleport(".container") @foreach ($items as $item) <p class="item"> Item: {{ $item }} </p> @endforeach @endteleport </div>

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

<div> <button> Add item </button> </div> <div class="container"> <p class="item"> Item: 1 </p> <p class="item"> Item: 2 </p> <p class="item"> Item: 3 </p> </div>

Пример

Давайте используем телепорт с условным отображением:

<?php namespace AppLivewire; use LivewireComponent; class TeleportConditional extends Component { public $showModal = false; public function toggleModal() { $this->showModal = !$this->showModal; } public function render() { return view('livewire.teleport-conditional'); } } ?>
<div> <button wire:click="toggleModal"> Toggle modal </button> @teleport("#modal-container") @if ($showModal) <div class="modal"> <p>Modal content</p> <button wire:click="toggleModal"> Close </button> </div> @endif @endteleport </div>

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

<div> <button> Toggle modal </button> </div> <div id="modal-container"> <div class="modal"> <p> Modal content </p> <button> Close </button> </div> </div>

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

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