如何解决Laravel-livewire:为什么触发事件执行render方法?
这是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()的情况下监听事件?
解决方法
这是livewire的工作方式。每当您更改任何内容/触发任何事件时。该组件将刷新。就我所学的livewire而言,除非您将die()放在showPOstAddedMessage函数上,否则无法停止它,这将是解决该问题的一种非常奇怪的方法。
,我有同样的问题。就我而言,render()方法关闭了我的父模式框。我刚刚在模式div中添加了“ wire:ignore”。 Livewire每当调用render()方法时都会忽略该div
,我来过这种黑客:如果您担心不重新渲染视图,则可以从render()
返回一个空字符串。 DOM将不会更新。
我的情况:我有一个不应呈现任何内容的下载方法。
public function download()
{
$this->skipRender();
}
public function render()
{
if($this->shouldSkipRender) {
return '';
}
return view("xxxxx");
}
只要我什么都不丢失,这对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。