Я пытаюсь установить связь между родительским и дочерним компонентом из родительского -> дочернего компонента с помощью Livewire 3. Конечная цель состоит в том, что после завершения действия над родительским компонентом я хочу, чтобы оно запускало обновление дочернего компонента.
Я попробовал пару вещей, но столкнулся с чем-то странным. Я использую Livewire v3.4.6
и пробовал использовать $this->dispatchSelf()
в дочернем компоненте и $this->dispatchTo()
в родительском компоненте, и оба они выдают ошибки Method App\Http\Livewire\Component::dispatchTo/dispatchSelf does not exist
!
Разве это не входит в комплект Livewire? Нужно ли мне импортировать dispatchTo/dispatchSelf
в компонент с помощью use
? Я предположил, что нет, учитывая, что dispatch()
работает нормально??
В документации говорится, что он поставляется из коробки, поэтому я в полном замешательстве!
Глядя на документацию, раньше правильно использовалось $this->emitTo()
, но теперь это $this->dispatch('event')->to('foo')
вместо $this->dispatchTo('event' ...)
.
Livewire 3 имеет методы to() и self() для связи с диспетчеризацией():
$this->dispatch('my-event')->to(AComponent::class);
$this->dispatch('another-event')->self();
на стороне js методы становятся sendTo и sendSelf
$wire.dispatchTo("component-name", "my-event");
$wire.dispatchSelf("another-event");
Также доступны магические методы $dispatchTo и $dispatchSelf:
<button wire:click = "$dispatchTo('component-name', 'my-event')">
Dispatch To
</button>
<button wire:click = "$dispatchSelf('another-event')">
Dispatch Self
</button>