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

Данные события в Livewire

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

В dispatch можно передать данные именованными аргументами. Метод с #[On] принимает их параметрами с теми же именами, и слушатель получает готовое значение.

Давайте сделаем страницу /picker с Picker и Board:

php artisan make:livewire Picker --class php artisan make:livewire Board --class

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

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

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

<x-layout> <livewire:picker /> <livewire:board /> </x-layout>

В Picker храним строку и шлём её с событием:

<?php namespace App\Livewire; use Livewire\Component; class Picker extends Component { public $label = 'Selected item'; public function choose() { $this->dispatch('chosen', label: $this->label); } public function render() { return view('livewire.picker'); } } ?>

Кнопка запускает отправку:

<div> <button type="button" wire:click="choose"> Choose </button> </div>

Board примет текст и покажет его:

<?php namespace App\Livewire; use Livewire\Attributes\On; use Livewire\Component; class Board extends Component { public $text = ''; #[On('chosen')] public function take($label) { $this->text = $label; } public function render() { return view('livewire.board'); } } ?>

Принятый текст выведем так:

<div> {{ $text }} </div>

Создайте компоненты Menu и Caption. Передайте в Caption текст, выбранный в Menu.

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