Laravel Livewire,与livewire组件之间的通信

时间:2020-04-20 19:01:28

标签: laravel laravel-livewire

我有2个livewire组件,第一个仅显示购物车的会话变量,第二个只是在购物车中添加项目(一种非常原始的形式,带有sku,标题,价格和数量)。

<livewire:shoppingcart :cart="$CartId">

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

这两个组件本身都能正常工作。但是,当我从第二个组件添加项目时,它的确更新了购物车会话变量,但视图从未更新。我必须刷新页面才能在购物车视图中查看会话变量。

是否可以将两个组件连接在一起。那么,当我从一个组件中将商品添加到购物车中时,它会自动更新其他组件的视图吗?

谢谢

1 个答案:

答案 0 :(得分:11)

在添加新产品之后,从第二个组件中可以发出类似以下的事件:

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

查看文档:{​​{3}}

现在,您可以从第一个组件监听事件,并使用名为$ refresh的livewire特殊操作

查看文档:{​​{3}}

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

我认为这可以解决您的问题。