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

Публичное свойство

Публичное свойство Livewire - это атрибут класса компонента, объявленный с модификатором public. Такие свойства доступны в Blade-шаблоне через фигурные скобки {{ $prop }} и автоматически отслеживаются Livewire. При изменении публичного свойства на сервере (например, в методе) компонент перерендеривается, и новое значение отображается на странице. Публичные свойства могут быть любого типа: строки, числа, массивы, объекты, коллекции. Важно: для хранения больших данных (например, всего Eloquent-модели) используйте protected свойства, чтобы избежать проблем с производительностью.

Синтаксис

<?php namespace AppLivewire; use LivewireComponent; class ComponentName extends Component { public $propertyName = 'default value'; public function render() { return view('livewire.component-name'); } } ?>

Пример

Объявим публичное свойство $num со значением 0 и метод inc, который увеличивает его на 1:

<?php namespace AppLivewire; use LivewireComponent; class Counter extends Component { public $num = 0; public function inc() { $this->num++; } public function render() { return view('livewire.counter'); } } ?>
<button wire:click="inc"> + </button> <span>{{ $num }}</span>

После нажатия на кнопку свойство $num увеличивается, и шаблон обновляется автоматически:

<button> + </button> <span>5</span>

Пример

Публичные свойства могут хранить массивы. Добавим метод, который добавляет элемент в массив $arr:

<?php namespace AppLivewire; use LivewireComponent; class ListComponent extends Component { public $arr = ['a', 'b', 'c']; public function add() { $this->arr[] = 'x'; } public function render() { return view('livewire.list-component'); } } ?>
<button wire:click="add"> add </button> <ul> @foreach ($arr as $item) <li>{{ $item }}</li> @endforeach </ul>

При каждом клике массив пополняется новым элементом:

['a', 'b', 'c', 'x', 'x']

Пример

Публичное свойство может быть строкой. Введём текст в поле и отобразим его:

<?php namespace AppLivewire; use LivewireComponent; class TextComponent extends Component { public $text = ''; public function render() { return view('livewire.text-component'); } } ?>
<input type="text" wire:model="text"> <p>{{ $text }}</p>

При вводе в поле свойство $text обновляется, и абзац показывает введённый текст:

<input type="text"> <p>abcde</p>

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

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