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

Директива @aware

Директива @aware используется в Blade-шаблонах для доступа к данным родительского компонента Livewire. Она позволяет дочернему компоненту получать значения свойств и вызывать методы родителя, не передавая их явно через параметры компонента. Это особенно полезно при работе с вложенными компонентами, где требуется общий доступ к состоянию.

Синтаксис

@aware(['propertyName', 'anotherProperty' => 'default'])

Директива принимает массив имен свойств или ассоциативный массив с значениями по умолчанию для тех свойств, которые не найдены в родителе.

Пример

Давайте создадим родительский компонент с публичным свойством $theme и дочерний компонент, который будет использовать это свойство:

<?php namespace AppLivewire; use LivewireComponent; class ParentComponent extends Component { public $theme = 'dark'; public function render() { return view('livewire.parent-component'); } } ?>
<div> <h2>Родительский компонент</h2> <p>Текущая тема: {{ $theme }}</p> <livewire:child-component /> </div>
<?php namespace AppLivewire; use LivewireComponent; class ChildComponent extends Component { public function render() { return view('livewire.child-component'); } } ?>
<div> <h3>Дочерний компонент</h3> @aware(['theme']) <p>Тема из родителя: {{ $theme }}</p> </div>

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

<div> <h2>Родительский компонент</h2> <p>Текущая тема: dark</p> <div> <h3>Дочерний компонент</h3> <p>Тема из родителя: dark</p> </div> </div>

Пример с значениями по умолчанию

Если свойство не найдено в родителе, можно указать значение по умолчанию. Давайте изменим дочерний компонент:

<div> <h3>Дочерний компонент</h3> @aware(['theme' => 'light', 'size' => 'medium']) <p>Тема: {{ $theme }}</p> <p>Размер: {{ $size }}</p> </div>

Теперь дочерний компонент использует значение по умолчанию для $theme и $size, если они не определены в родителе:

<div> <h3>Дочерний компонент</h3> <p>Тема: light</p> <p>Размер: medium</p> </div>

Пример с методами родителя

Директива @aware также позволяет вызывать публичные методы родительского компонента. Добавим метод в родительский компонент:

<?php namespace AppLivewire; use LivewireComponent; class ParentComponent extends Component { public $theme = 'dark'; public $counter = 0; public function incrementCounter() { $this->counter++; } public function render() { return view('livewire.parent-component'); } } ?>
<div> <h2>Родительский компонент</h2> <p>Счетчик: {{ $counter }}</p> <livewire:child-component /> </div>
<div> <h3>Дочерний компонент</h3> @aware(['counter', 'incrementCounter']) <p>Счетчик из родителя: {{ $counter }}</p> <button wire:click="incrementCounter"> Увеличить счетчик </button> </div>

Теперь дочерний компонент может вызывать метод родителя для изменения состояния:

<div> <h3>Дочерний компонент</h3> <p>Счетчик из родителя: 1</p> <button> Увеличить счетчик </button> </div>

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

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