3

这是 Laravel 的 Livewire 框架

HTML:

<button wire:click="$emit('postAdded')">

PHP:

protected $listeners = ['postAdded' => 'showPostAddedMessage'];

public function showPostAddedMessage()
{
    // Do stuff
}

public function render()
{
    return view('livewire.index');
}

单击按钮调用 showPostAddedMessage() 并在此之后调用 render()。如何在不调用 render() 的情况下监听事件?

4

3 回答 3

5

我遇到过同样的问题。就我而言, render() 方法正在关闭我的父模式框。我刚刚在模态 div 中添加了“wire:ignore”。每当调用 render() 方法时,Livewire 都会忽略该 div

于 2020-11-04T07:32:47.263 回答
3

这就是livewire的工作原理。每当您更改任何内容/触发任何事件时。组件将刷新。据我所知,没有办法阻止它,除非您将 die() 放在 showPOstAddedMessage 函数中,这将是一种非常奇怪的解决方法。

于 2020-08-14T07:12:14.467 回答
3

我遇到了这种 hack:如果您担心不重新渲染视图,您可以从render(). DOM 不会更新。
我的情况:我有一个不应该渲染任何东西的下载方法。

public function download()
{
   $this->skipRender();
}

public function render()
{
    if($this->shouldSkipRender) {
        return '';
    }
    
    return view("xxxxx");
}

只要我没有遗漏任何东西,这对我有用。

于 2020-11-05T08:19:02.117 回答