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

Ключ элемента списка в Livewire

Удаление заголовка из конца списка выглядит правильно. Удаление из середины уже нет: фреймворк сличает старую и новую разметку по порядку строк. Кнопка удаления может остаться у соседнего текста, хотя с сервера пришёл уже другой список.

Атрибут wire:key даёт строке постоянное имя. Пункт узнают по этому имени, а не по месту в списке, и при удалении забирают именно его. Имя должно быть уникальным. Заголовки постов не повторяются, поэтому ключом подойдёт сам текст $title.

Давайте соберём полный PostList и добавим wire:key на каждый li:

<?php namespace App\Livewire; use Livewire\Component; class PostList extends Component { public $titles = ['News', 'Photo']; public function add() { $this->titles[] = 'post ' . (count($this->titles) + 1); } public function remove($index) { unset($this->titles[$index]); $this->titles = array_values($this->titles); } public function render() { return view('livewire.post-list'); } } ?>

Давайте зададим ключ у пункта списка в шаблоне:

<div> <ul> @foreach ($titles as $index => $title) <li wire:key="{{ $title }}"> {{ $title }} <button type="button" wire:click="remove({{ $index }})"> Delete </button> </li> @endforeach </ul> <button type="button" wire:click="add"> Add </button> </div>

Удалите работника из середины списка так, чтобы имя и кнопка остались у своего человека.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить