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

Директива wire:key

Директива wire:key используется для назначения уникального ключа элементу в циклах. Это помогает Livewire отслеживать изменения в списках и эффективно перерисовывать только те элементы, которые действительно изменились. В значение передаётся выражение, возвращающее уникальный идентификатор элемента.

Синтаксис

@foreach ($arr as $item) <div wire:key="{{ $item['id'] }}"> {{ $item['name'] }} </div> @endforeach

Пример

Давайте выведем список элементов с использованием wire:key:

<?php namespace AppLivewire; use LivewireComponent; class ListComponent extends Component { public $items = [ ['id' => 1, 'name' => 'First'], ['id' => 2, 'name' => 'Second'], ['id' => 3, 'name' => 'Third'], ]; public function render() { return view('livewire.list-component'); } } ?>
<ul> @foreach ($items as $item) <li wire:key="{{ $item['id'] }}"> {{ $item['name'] }} </li> @endforeach </ul>

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

<ul> <li>First</li> <li>Second</li> <li>Third</li> </ul>

Пример

Давайте используем индексацию через $loop->index в качестве ключа:

<?php namespace AppLivewire; use LivewireComponent; class IndexComponent extends Component { public $letters = ['a', 'b', 'c', 'd', 'e']; public function render() { return view('livewire.index-component'); } } ?>
<ul> @foreach ($letters as $letter) <li wire:key="{{ $loop->index }}"> {{ $letter }} </li> @endforeach </ul>

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

<ul> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> </ul>

Пример

Давайте динамически добавим элемент в список и посмотрим на ключи:

<?php namespace AppLivewire; use LivewireComponent; class DynamicComponent extends Component { public $items = [ ['id' => 1, 'name' => 'First'], ['id' => 2, 'name' => 'Second'], ]; public function addItem() { $newId = count($this->items) + 1; $this->items[] = ['id' => $newId, 'name' => 'Item ' . $newId]; } public function render() { return view('livewire.dynamic-component'); } } ?>
<ul> @foreach ($items as $item) <li wire:key="{{ $item['id'] }}"> {{ $item['name'] }} </li> @endforeach </ul> <button wire:click="addItem">Add item</button>

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

<ul> <li>First</li> <li>Second</li> <li>Item 3</li> </ul> <button>Add item</button>

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

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