首页 > 解决方案 > 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 合作的任何人都可以对此有所帮助。

标签: phplaravellaravel-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 中


推荐阅读