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

Объект $wire

Объект $wire доступен в JavaScript-коде внутри компонента Livewire и предоставляет интерфейс для взаимодействия с компонентом. Через него можно вызывать публичные методы компонента, получать и изменять значения свойств, а также управлять жизненным циклом. Объект автоматически создается для каждого экземпляра компонента и доступен как глобальная переменная $wire внутри представления.

Вызов метода компонента

Основное назначение объекта $wire - вызов публичных методов компонента из JavaScript. Метод call принимает имя метода и опциональные аргументы, которые будут переданы в метод компонента.

<?php namespace AppLivewire; use Livewire\Component; class Counter extends Component { public $num = 0; public function inc($step = 1) { $this->num += $step; } public function render() { return view('livewire.counter'); } } ?>
<div> <span>{{ $num }}</span> <button onclick="$wire.call('inc', 5)">+5</button> </div>

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

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

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

Объект $wire позволяет получать значения публичных свойств компонента через метод get. Метод возвращает Promise, поэтому результат обрабатывается в асинхронном коде.

<?php namespace AppLivewire; use Livewire\Component; class Counter extends Component { public $num = 10; public $text = 'abcde'; public function render() { return view('livewire.counter'); } } ?>
<div> <button onclick="getNum()">Get num</button> </div> <script> async function getNum() { const num = await $wire.get('num'); const text = await $wire.get('text'); console.log(num, text); } </script>

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

"10 abcde"

Установка свойств

Метод set позволяет установить новое значение публичного свойства компонента. После установки Livewire автоматически обновляет представление.

<?php namespace AppLivewire; use Livewire\Component; class Counter extends Component { public $num = 0; public $text = 'abcde'; public function render() { return view('livewire.counter'); } } ?>
<div> <span>{{ $num }}</span> <span>{{ $text }}</span> <button onclick="$wire.set('num', 10)">Set num</button> </div>

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

<div> <span>10</span> <span>abcde</span> <button>Set num</button> </div>

Одновременная установка нескольких свойств

Метод set также может принимать объект с несколькими свойствами для массового обновления.

<?php namespace AppLivewire; use Livewire\Component; class Counter extends Component { public $num = 0; public $text = 'abcde'; public function render() { return view('livewire.counter'); } } ?>
<div> <span>{{ $num }}</span> <span>{{ $text }}</span> <button onclick="$wire.set({num: 20, text: 'xyz'})">Set both</button> </div>

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

<div> <span>20</span> <span>xyz</span> <button>Set both</button> </div>

Принудительное обновление

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

<?php namespace AppLivewire; use Livewire\Component; class Counter extends Component { public $num = 0; public $arr = [1, 2, 3, 4, 5]; public function render() { return view('livewire.counter'); } } ?>
<div> <span>{{ $num }}</span> <button onclick="updateAndRefresh()">Update</button> </div> <script> async function updateAndRefresh() { $wire.num = 15; await $wire.refresh(); } </script>

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

<div> <span>15</span> <button>Update</button> </div>

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

  • метод call,
    который вызывает метод компонента из JavaScript
  • метод set,
    который устанавливает значения свойств компонента
  • метод refresh,
    который принудительно обновляет представление
  • метод commit,
    который отправляет действие на сервер с синхронизацией свойств
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить