所以,我目前正在使用 Laravel Livewire在我的一个项目中。但是,当我尝试通过魔术 $refresh
从一个组件向另一个组件发出事件时,它会刷新(在 xhr request 中获取 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 合作的任何人都可以提供帮助。
最佳答案
看来我以错误的方式编写了组件 Blade View 。
刷新组件上的所有内容都应该包装在一个 div 元素中,如下所示:
<div>
{{-- Anything you want to do --}}
</div>
以前我的 Blade 文件是这样的。 哪一个是错误的
<div class="">
{{ -- some dom elements -- }}
</div>
<div class="">
{{ -- some other dom elements -- }}
</div>
但应该是这样的。
<div>
<div class="">
{{ -- some dom elements -- }}
</div>
<div class="">
{{ -- some other dom elements -- }}
</div>
</div>
所以无论你写什么,都应该在一个父级 DIV 元素内
关于php - Laravel Livewire 组件刷新后不会自动刷新/重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60395647/