php - Laravel Livewire 组件在刷新后不会自动刷新/重新加载
问题描述
所以,我目前在我的一个项目中使用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');
}
所以我想reviewSectionRefresh
在我从第一个组件调用函数时发出要发出的事件save()
,这应该被$listeners
其他组件监听。这工作正常。同样在 xhr 中,我得到了刷新的 dom,但前端的组件没有更新。希望与 Livewire 合作的任何人都可以对此有所帮助。
解决方案
因此,我似乎以错误的方式编写了组件刀片视图。
刷新组件上的所有内容都应包含在一个 div 元素中,如下所示:
<div>
{{-- Anything you want to do --}}
</div>
以前我的刀片文件是这样的。哪个是错的
<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>
所以无论你写什么,都应该在 ONE PARENT DIV ELEMENT 中
推荐阅读
- azure - Azure IoT Edge 和证书
- c++ - 在嵌入式 C++ 中使用运算符作为预定义变量来评估字符串格式的逻辑表达式
- angular - 总和不适用于使用 forEach 的角度
- c# - 继承 NLog WrapperTargetBase 用于同步日志记录
- xml - 将 XML/XSD/WSDL 的混合转换为 java 类
- ios - Swift - 在加载时重命名 UILabel
- hl7-fhir - 我们可以更新 FHIR 中的捆绑包吗?
- azure - 使用 Azure 逻辑应用在 Azuresql 数据库中插入行
- ios - AWS Amplify Swift API 登录 iOS 移动应用程序
- android - 使用 ThreetenBp 解析 DateTime 会导致 DateTimeParseException 或不完整的字符串错误