簡體   English   中英

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() 的情況下監聽事件?

我遇到過同樣的問題。 就我而言, render() 方法正在關閉我的父模式框。 我剛剛在模態 div 中添加了“wire:ignore”。 每當調用 render() 方法時,Livewire 都會忽略該 div

這就是livewire的工作原理。 每當您更改任何內容/觸發任何事件時。 組件將刷新。 據我所知,沒有辦法阻止它,除非你把 die() iside showPOstAddedMessage function,這將是一個非常奇怪的解決方法。

我遇到了這種 hack:如果您擔心不重新渲染視圖,您可以從render()返回一個空字符串。 DOM 不會更新。
我的情況:我有一個不應該渲染任何東西的下載方法。

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

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

只要我沒有遺漏任何東西,這對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM