【发布时间】:2020-06-09 05:56:48
【问题描述】:
所以,我目前在我的一个项目中使用Laravel Livewire。但是,当我尝试通过魔术方法 $refresh 将事件从一个组件发送到另一个组件时,它会刷新(在 xhr 请求中获取 dom)整个组件,但前端不会实时更新。
ProductReviewForm.php 组件:
public function save()
{
//some functionalities ....
$this->emit('reviewSectionRefresh');
}
ProductReviewSection.php 组件:
protected $listeners = [
'reviewSectionRefresh' => '$refresh',
];
public function render()
{
$this->review_lists = ProductReview::orderBy('id', 'DESC')->get();
return view('livewire.desktop.product-review-section');
}
所以我想在第一个组件调用save() 函数时发出reviewSectionRefresh 事件,这应该由其他组件的$listeners 监听。这工作正常。同样在 xhr 中,我得到了刷新的 dom,但前端的组件没有更新。希望与 Livewire 合作的任何人都可以对此有所帮助。
【问题讨论】:
-
我不确定,但你可以试试不带引号的
'$refresh'。 -
您是否尝试将对象作为第二个参数传递给
view()? `return view('template-name', ['review_lists' => $review_lists]); -
@KPK ,不,这会给出错误,未定义 $refresh ,因为这将需要 $refresh 变量。你可以看到calebporzio.com/video-realtime-livewire-w-laravel-echo-pusher这个。 (第二个视频在 2.54 分钟) Livewire 是不久前出现的全新事物,这就是为什么我到目前为止找不到任何帮助。
-
你有触发动作吗?类似
<button wire:click="save"> -
@Chemaclass 它不像那样工作,兄弟 :( 请参阅此处的 Livewire:youtu.be/fX1aOWWt2nQ
标签: php laravel laravel-livewire