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

Отправка события в Livewire

Пусть на странице рядом стоят два блока, и нажатие в одном должно отозваться в другом. Общей обёртки с нужной логикой у них нет: каждый блок собран отдельно. Передавать между ними чужое значение неудобно, потому что они не вложены друг в друга.

Компонент может сообщить странице, что произошло действие, через метод dispatch. Событие уходит компонентам на этой же странице, которые его ждут. Само по себе нажатие кнопки их не меняет: они реагируют, только если ждут этот сигнал.

Давайте сделаем страницу /notify с компонентом Notifier:

php artisan make:livewire Notifier --class

Давайте добавим маршрут:

<?php Route::get('/notify', function () { return view('notify'); }); ?>

Страница вставит компонент:

<x-layout> <livewire:notifier /> </x-layout>

В классе Notifier добавим метод, который шлёт событие ping:

<?php namespace App\Livewire; use Livewire\Component; class Notifier extends Component { public function ping() { $this->dispatch('ping'); } public function render() { return view('livewire.notifier'); } } ?>

Давайте повесим вызов метода на кнопку в шаблоне:

<div> <button type="button" wire:click="ping"> Send </button> </div>

Создайте компонент Alarm с кнопкой. По нажатию сообщите остальным компонентам страницы, что кнопка нажата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить