php - Laravel Livewire 组件刷新后不会自动刷新/重新加载

标签 php laravel 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');
} 

所以我想每当我从第一个组件调用 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/

相关文章:

javascript - 编辑注册表单 woocommerce 中的字段类型

php - 为无限的类别深度构建面包屑 - PHP + SQL

php - 使用 API key 访问 Google Adsense Api

laravel-livewire - 输入值不适用于 Livewire 线 :model

laravel - 属性[livewire]不存在

Laravel Errorbag​​ 无法在 Blade 组件内工作

php - 从 URL 下载图像并上传到 WordPress 媒体库

php - 拉维尔 |在 2 个表中搜索

Laravel CSRF 代币

php - Laravel Cookie 未通过 Javascript 显示