Laravel Livewire,两个 livewire 组件之间的通信

use*_*227 8 laravel laravel-livewire

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

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

<livewire:order-add-product-form :orderAddProductCartId="$CartId">
Run Code Online (Sandbox Code Playgroud)

这两个组件本身都运行良好。但是当我从第二个组件添加项目时,它会更新购物车会话变量,但视图永远不会更新。我必须刷新页面才能在购物车视图中查看会话变量。

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

谢谢

Naj*_*kib 19

从添加新产品后的第二个组件中,您可以发出如下事件:

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

Run Code Online (Sandbox Code Playgroud)

查看文档:Livewire Events

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

请参阅文档:特殊操作

protected $listeners = [
    'cart:update' => '$refresh',
];
Run Code Online (Sandbox Code Playgroud)

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