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

Метод dispatchTo

Метод dispatchTo класса Component предназначен для отправки событий конкретному компоненту из другого компонента. Он принимает имя компонента-получателя, имя события и данные. Этот метод полезен когда нужно взаимодействовать между компонентами без использования глобальных событий.

Синтаксис

Метод вызывается внутри компонента-отправителя.

<?php $this->dispatchTo('receiver-component', 'event-name', ['param' => $value]); ?>

Параметры

Метод принимает три параметра:

  • $componentName - имя компонента-получателя (строка)
  • $event - имя события (строка)
  • $params - дополнительные параметры события (массив, опционально)

Пример

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

<?php namespace AppLivewire; use LivewireComponent; class Sender extends Component { public function sendEvent() { $this->dispatchTo('receiver', 'message-sent', ['text' => 'Hello from sender']); } public function render() { return view('livewire.sender'); } } ?>
<?php namespace AppLivewire; use LivewireComponent; class Receiver extends Component { public $message = ''; protected $listeners = ['message-sent' => 'handleMessage']; public function handleMessage($params) { $this->message = $params['text']; } public function render() { return view('livewire.receiver'); } } ?>
<div> <button wire:click="sendEvent"> Send Message </button> </div>
<div> <p> Received: {{ $message }} </p> </div>

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

<button> Send Message </button> <p> Received: Hello from sender </p>

Пример

Давайте отправим несколько параметров в событие:

<?php namespace AppLivewire; use LivewireComponent; class Sender extends Component { public function sendData() { $this->dispatchTo('receiver', 'data-updated', [ 'id' => 5, 'name' => 'article', 'status' => 'active' ]); } public function render() { return view('livewire.sender'); } } ?>
<?php namespace AppLivewire; use LivewireComponent; class Receiver extends Component { public $data = []; protected $listeners = ['data-updated' => 'updateData']; public function updateData($params) { $this->data = $params; } public function render() { return view('livewire.receiver'); } } ?>
<div> @if ($data) <p> ID: {{ $data['id'] }} </p> <p> Name: {{ $data['name'] }} </p> <p> Status: {{ $data['status'] }} </p> @endif </div>

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

<p> ID: 5 </p> <p> Name: article </p> <p> Status: active </p>

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

  • метод dispatch,
    который отправляет событие всем компонентам
  • метод dispatchSelf,
    который отправляет событие только текущему компоненту
  • свойство listeners,
    которое определяет обработчики событий
  • метод on,
    который регистрирует обработчик события
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить