时间戳转换器

Laravel-livewire:为啥触发事件会执行 render() 方法?

日期:2023-02-22     浏览:193    
【中文标题】Laravel-livewire:为啥触发事件会执行 render() 方法?【英文标题】:Laravel-livewire: Why does firing an event execute the render() method?Laravel-livewire:为什么触发事件会执行 render() 方法? 【发布时间】:2020-12-01 13:15:55 【问题描述】:

这是 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 的工作原理。每当您更改任何内容/触发任何事件时。组件将刷新。据我所知,没有办法阻止它,除非你将 die() 放在 showPOstAddedMessage 函数中,这将是一种非常奇怪的解决方法。 @fahim152 哦,这很有道理。我必须将加载消息的部分和发送消息的部分分开。非常感谢!您能否也发表您的评论作为答案,以便我将其标记为已解决? :) 我通过嵌套 2 个组件解决了我的问题。父组件触发一个事件,子组件没有更新,这正是我想要的! 恭喜....我不这么认为。顺便说一句,很棒的解决方案...我的评论不是解决方案。它只是一个评论。它并没有解决你正在寻找的兄弟。如果您在答案部分写下您的解决方案,这样其他人将来可以得到帮助,那就太好了:) @fahim152 触发事件是刷新组件的原因,您的话和我的问题的答案(不是我的问题!!!)所以请添加这个作为答案:))跨度> 【参考方案1】:

这就是 livewire 的工作原理。每当您更改任何内容/触发任何事件时。组件将刷新。据我所知,没有办法阻止它,除非您将 die() 放在 showPOstAddedMessage 函数中,这将是一种非常奇怪的解决方法。

【讨论】:

【参考方案2】:

我遇到了同样的问题。就我而言, render() 方法正在关闭我的父模式框。我刚刚在模态 div 中添加了“wire:ignore”。 Livewire 在调用 render() 方法时会忽略该 div

【讨论】:

每次我从调用的下拉渲染方法中选择任何项目时,我假设播放视频的特定 div 都会消失,所以我将 wire:ignore 放在那个 div 上,它就可以工作了。 谢谢,这正是我想要的 :)【参考方案3】:

我遇到了这种 hack:如果您担心不重新渲染视图,您可以从 render() 返回一个空字符串。 DOM 不会更新。 我的情况:我有一个不应该渲染任何东西的下载方法。

public function download()

   $this->skipRender();


public function render()

    if($this->shouldSkipRender) 
        return '';
    
    
    return view("xxxxx");

只要我没有遗漏任何东西,这对我有用。

【讨论】:

谢谢,您也可以在 livewire 组件的第一个 div 中添加“wire:ignore” :)

相关文章

为啥我的动作脚本事件没有触发?

{】为啥我的动作脚本事件没有触发?【英文标题】:Whyismyactionscripteventnotfiring?为什么我的动作脚本事件没有触发?【发布时间】:2017-12-2320:56:39【问题描述】:目前,我正在尝试添加将演示文稿的所有幻灯片捕获到图像并将它...}

为啥鼠标右键单击在按下时会触发“pointerdown”事件,但在释放时不会触发“pointerup”事件?

{】为啥鼠标右键单击在按下时会触发“pointerdown”事件,但在释放时不会触发“pointerup”事件?【英文标题】:Whydoesamouserightclickfirethe"pointerdown"eventwhenpresseddownbutnotthe"pointerup"eventwhenreleased?为什么鼠标右键单击在按...}

为啥 Socket.AcceptAsync 没有触发 SocketAsyncEventArgs Completed 事件?

{】为啥Socket.AcceptAsync没有触发SocketAsyncEventArgsCompleted事件?【英文标题】:WhySocket.AcceptAsyncisn\'tfiringSocketAsyncEventArgsCompletedevent?为什么Socket.AcceptAsync没有触发SocketAsyncEventArgsCompleted事件?【发布时间】:2015-09-2717:26:34【问题描述】}

为啥 jQuery 选择事件侦听器会触发多次?

{】为啥jQuery选择事件侦听器会触发多次?【英文标题】:WhyisjQueryselecteventlistenertriggeringmultipletimes?为什么jQuery选择事件侦听器会触发多次?【发布时间】:2016-07-1700:09:35【问题描述】:请在GoogleChrome浏览器中运行thissample。堆栈...}

为啥在重新加载页面时触发onclick事件

{】为啥在重新加载页面时触发onclick事件【英文标题】:Whyonclickeventtriggeredwhenpageisreloaded为什么在重新加载页面时触发onclick事件【发布时间】:2022-01-1023:37:03【问题描述】:所以,我的.cshtml文件中有一个按钮:<div><buttonid=...}

为啥 iPad 有时不触发 onload 事件?

{】为啥iPad有时不触发onload事件?【英文标题】:WhydoesiPadnotfireonloadeventssometimes?为什么iPad有时不触发onload事件?【发布时间】:2013-09-1301:22:35【问题描述】:我注意到在我正在构建的一个网络应用程序上,当在iPad上查看时,jQuer...}

只能通过 unsafeWindow 从 TamperMonkey 脚本触发鼠标悬停事件 - 为啥?

{】只能通过unsafeWindow从TamperMonkey脚本触发鼠标悬停事件-为啥?【英文标题】:CanonlytriggermouseovereventfromTamperMonkeyscriptviaunsafeWindow-Why?只能通过unsafeWindow从TamperMonkey脚本触发鼠标悬停事件-为什么?【发布时间】:2014-02-0814:20:13【问...}

为啥我的复选框更改事件没有被触发?

{】为啥我的复选框更改事件没有被触发?【英文标题】:Whyisn\'tmycheckboxchangeeventtriggered?为什么我的复选框更改事件没有被触发?【发布时间】:2011-06-1916:35:11【问题描述】:我有两个功能。第一个函数将div单击转换为选中/未选...}

为啥我不能使用 jQuery 从卸载事件处理程序触发 AJAX 请求?

{】为啥我不能使用jQuery从卸载事件处理程序触发AJAX请求?【英文标题】:Whycan\'tIusejQuerytofireanAJAXrequestfromanunloadeventhandler?为什么我不能使用jQuery从卸载事件处理程序触发AJAX请求?【发布时间】:2011-01-1712:17:28【问题描述】:我...}

为啥我的以太坊“.on”事件监听器停止触发?

{】为啥我的以太坊“.on”事件监听器停止触发?【英文标题】:WhyDoesMyEthereum".on"EventListenerStopFiring?为什么我的以太坊“.on”事件监听器停止触发?【发布时间】:2022-01-1609:54:40【问题描述】:我有一个node.js服务器,我在...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号