Laravel Livewire, связь между компонентами livewire

У меня есть 2 компонента livewire, 1-й только отображает переменную сеанса корзины, а 2-й - просто для добавления товаров в корзину (очень сырая форма с артикулом, заголовком, ценой и количеством).

livewire:shoppingcart:cart="$CartId">

livewire:order-add-product-form:orderAddProductCartId="$CartId">

Оба компонента работают нормально сами по себе. Но когда я добавляю элемент из второго компонента, он обновляет переменную сеанса корзины, но представление никогда не обновляется. Мне нужно обновить страницу, чтобы увидеть переменную сеанса в представлении корзины.

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

Спасибо

1 ответ

Решение

Из второго компонента после добавления нового продукта вы можете создать событие вроде:

$this->emit('cart:update');

См. Документацию: События Livewire

Теперь вы можете прослушать событие от первого компонента и использовать специальное действие livewire под названием $ refresh.

См. Документы: Особые действия

protected $listeners = [
    'cart:update' => '$refresh',
];

Думаю, это решит вашу проблему.

Другие вопросы по тегам