亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel-livewire:為什么觸發事件會執行 render() 方法?

Laravel-livewire:為什么觸發事件會執行 render() 方法?

PHP
三國紛爭 2023-10-01 16:07:21
這是 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 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

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



查看完整回答
反對 回復 2023-10-01
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

我遇到了這種黑客:如果您關心的是不重新渲染視圖,您可以從render(). DOM 不會更新。

我的情況:我有一個不應該渲染任何內容的下載方法。


public function download()

{

   $this->skipRender();

}


public function render()

{

    if($this->shouldSkipRender) {

        return '';

    }

    

    return view("xxxxx");

}

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


查看完整回答
反對 回復 2023-10-01
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

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



查看完整回答
反對 回復 2023-10-01
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

對于現在遇到此問題的任何人,Livewire 3 中的新功能可以解決此問題。


Livewire 3Component具有skipRender()可以在執行事件處理程序邏輯后調用的函數。


#[On('some_event')]

public function handleSomeEvent()

{

? ? -- event code here


? ? $this->skipRender();

}

順便說一句,在文檔中,還有一個#[Renderless]屬性可以添加到方法中,以指示它們不應導致組件重新渲染。#[On]但是,我發現這對也具有偵聽事件屬性的方法沒有影響。


查看完整回答
反對 回復 2023-10-01
  • 4 回答
  • 0 關注
  • 196 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號