Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel livewire:为什么触发事件会执行render()方法?_Php_Html_Laravel_Laravel Livewire - Fatal编程技术网

Php Laravel livewire:为什么触发事件会执行render()方法?

Php Laravel livewire:为什么触发事件会执行render()方法?,php,html,laravel,laravel-livewire,Php,Html,Laravel,Laravel Livewire,这是Laravel的Livewire框架 HTML: 单击该按钮将调用showPostAddedMessage()并在该render()之后调用。如何在不调用render()的情况下侦听事件?这就是livewire的工作方式。每当你改变任何事情/触发任何事件时。组件将刷新。就我所了解的livewire而言,除非您将die()isnide showPOstAddedMessage函数放入,否则无法阻止它,这将是一种非常巧妙的解决方法。我也遇到了同样的问题。在我的例子中,render()方法正在关闭

这是Laravel的Livewire框架

HTML:


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

这就是livewire的工作方式。每当你改变任何事情/触发任何事件时。组件将刷新。就我所了解的livewire而言,除非您将die()isnide showPOstAddedMessage函数放入,否则无法阻止它,这将是一种非常巧妙的解决方法。

我也遇到了同样的问题。在我的例子中,render()方法正在关闭父模式框。我刚刚在modal div中添加了“wire:ignore”。每当调用render()方法时,Livewire都会忽略该div。我遇到了这样的问题:如果您关心的是不重新渲染视图,您可以从
render()
返回一个空字符串。不会更新DOM。
我的案例:我有一个下载方法,它不应该呈现任何东西

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

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

只要我没有遗漏任何东西,这对我来说就行。

livewire就是这样工作的。每当你改变任何事情/触发任何事件时。组件将刷新。就我所学的livewire而言,除非你使用die()isnide showPOstAddedMessage函数,否则无法阻止它,这将是一种非常复杂的解决方法。@fahim152哦,这很有意义。我必须将加载消息的部分和发送消息的部分分开。非常感谢你!你能把你的评论也贴出来作为答案吗?这样我就可以把它标记为已解决了我通过嵌套两个组件解决了我的问题。父组件触发事件,子组件不更新,这正是我想要的!恭喜。。。。我不是那样想的。伟大的解决方案。。。我的评论不是解决问题的办法。这只是一个评论。这并不能解决你在找什么,兄弟。如果你能在答案部分写下你的解决方案,这样其他人将来就能得到帮助,那就太好了:)@fahim152触发事件是刷新组件的原因,你的话和我问题的答案(不是我的问题!!!)因此,请添加以下内容作为答案:))每次我从下拉菜单中选择任何项目时,渲染方法调用和我的特定div(假设播放视频的位置消失),所以我在该div上放置wire:ignore,它就工作了。很高兴它工作了!谢谢,这正是我想要的:)谢谢,您还可以在livewire组件的第一个div中添加“wire:ignore:)
protected $listeners = ['postAdded' => 'showPostAddedMessage'];

public function showPostAddedMessage()
{
    // Do stuff
}

public function render()
{
    return view('livewire.index');
}
public function download()
{
   $this->skipRender();
}

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