Laravel-livewire:为什么触发事件会执行 render() 方法?
Laravel-livewire: Why does firing an event execute the render() method?
这是 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”。每当调用 render() 方法时,Livewire 都会忽略 div
我遇到了这种技巧:如果您担心的是 re-render 视图,您可以 return 来自 render()
的空字符串。 DOM 不会更新。
我的情况:我有一个不应该呈现任何内容的下载方法。
public function download()
{
$this->skipRender();
}
public function render()
{
if($this->shouldSkipRender) {
return '';
}
return view("xxxxx");
}
只要我没有遗漏任何东西,这对我有用。
这是 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”。每当调用 render() 方法时,Livewire 都会忽略 div
我遇到了这种技巧:如果您担心的是 re-render 视图,您可以 return 来自 render()
的空字符串。 DOM 不会更新。
我的情况:我有一个不应该呈现任何内容的下载方法。
public function download()
{
$this->skipRender();
}
public function render()
{
if($this->shouldSkipRender) {
return '';
}
return view("xxxxx");
}
只要我没有遗漏任何东西,这对我有用。