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

Класс Component

Класс Component является основой каждого компонента Livewire. Все пользовательские компоненты должны наследовать этот класс. Он предоставляет базовую функциональность для управления состоянием, обработки событий и рендеринга представлений.

Структура компонента

Базовый компонент Livewire состоит из класса-наследника Component и соответствующего Blade-шаблона. Класс содержит публичные свойства для хранения состояния и методы для обработки действий пользователя.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function render() { return view('livewire.counter'); } } ?>

Пример

Создадим простой компонент для отображения и изменения числа:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 5; public function render() { return view('livewire.counter'); } } ?>
<div> <h2>Counter</h2> <p>Current value: {{ $num }}</p> <button wire:click="inc">+</button> <button wire:click="dec">-</button> </div>

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

<div> <h2>Counter</h2> <p>Current value: 5</p> <button>+</button> <button>-</button> </div>

Пример

Добавим метод для увеличения числа и свойство для хранения сообщения:

<?php namespace AppLivewire; use LivewireComponent; class Message extends Component { public $text = 'Hello World'; public $count = 0; public function updateMessage() { $this->count++; $this->text = 'Updated ' . $this->count . ' times'; } public function render() { return view('livewire.message'); } } ?>
<div> <p>{{ $text }}</p> <button wire:click="updateMessage"> Update </button> </div>

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

<div> <p>Updated 1 times</p> <button>Update</button> </div>

Пример

Компонент может содержать массив свойств и работать с коллекциями:

<?php namespace AppLivewire; use LivewireComponent; class ListComponent extends Component { public $items = ['a', 'b', 'c']; public $newItem = ''; public function addItem() { if ($this->newItem) { $this->items[] = $this->newItem; $this->newItem = ''; } } public function removeItem($index) { unset($this->items[$index]); $this->items = array_values($this->items); } public function render() { return view('livewire.list'); } } ?>
<div> <ul> @foreach ($items as $key => $item) <li> {{ $item }} <button wire:click="removeItem({{ $key }})">x</button> </li> @endforeach </ul> <input type="text" wire:model="newItem"> <button wire:click="addItem">Add</button> </div>

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

<div> <ul> <li>a <button>x</button></li> <li>b <button>x</button></li> <li>c <button>x</button></li> </ul> <input type="text"> <button>Add</button> </div>

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

  • метод render,
    который возвращает шаблон компонента
  • публичные свойства public-prop,
    которые хранят состояние компонента
  • метод placeholder,
    который задает состояние загрузки компонента
  • свойство id,
    которое возвращает уникальный идентификатор компонента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить