Laravel Livewire,两个livewire组件之间的通信
Laravel Livewire, communication between two livewire components
我有 2 个 livewire 组件,第一个仅显示购物车的 session 变量,第二个仅用于在购物车中添加商品(一种非常原始的形式,包含 sku、标题、价格和数量)。
<livewire:shoppingcart :cart="$CartId">
<livewire:order-add-product-form :orderAddProductCartId="$CartId">
两个组件本身都运行良好。但是当我从第二个组件添加项目时,它会更新购物车 session 变量,但视图永远不会更新。我必须刷新页面才能在购物车视图中看到 session 变量。
是否可以将两个组件连接在一起。所以,当我从一个组件向购物车添加商品时,它会自动更新其他组件的视图吗?
谢谢
在添加新产品后,您可以从第二个组件发出一个事件,例如:
$this->emit('cart:update');
查看文档:Livewire Events
现在您可以从第一个组件监听事件并使用名为 $refresh 的 livewire 特殊操作
查看文档:Special Actions
protected $listeners = [
'cart:update' => '$refresh',
];
我认为这可以解决您的问题。
我有 2 个 livewire 组件,第一个仅显示购物车的 session 变量,第二个仅用于在购物车中添加商品(一种非常原始的形式,包含 sku、标题、价格和数量)。
<livewire:shoppingcart :cart="$CartId">
<livewire:order-add-product-form :orderAddProductCartId="$CartId">
两个组件本身都运行良好。但是当我从第二个组件添加项目时,它会更新购物车 session 变量,但视图永远不会更新。我必须刷新页面才能在购物车视图中看到 session 变量。
是否可以将两个组件连接在一起。所以,当我从一个组件向购物车添加商品时,它会自动更新其他组件的视图吗?
谢谢
在添加新产品后,您可以从第二个组件发出一个事件,例如:
$this->emit('cart:update');
查看文档:Livewire Events
现在您可以从第一个组件监听事件并使用名为 $refresh 的 livewire 特殊操作
查看文档:Special Actions
protected $listeners = [
'cart:update' => '$refresh',
];
我认为这可以解决您的问题。