【发布时间】:2021-03-11 04:53:43
【问题描述】:
是否有可能在每个点击事件上停止 Livewire 渲染?
其实问题是,如果有任何事件从 HTML 或 Javascript 触发,那么渲染函数会自动从 Laravel 中的 Livewire 组件调用。
似乎如果任何第三方工具在 HTML 中初始化,那么它会再次触发渲染功能。
如何避免这种情况?任何帮助
【问题讨论】:
是否有可能在每个点击事件上停止 Livewire 渲染?
其实问题是,如果有任何事件从 HTML 或 Javascript 触发,那么渲染函数会自动从 Laravel 中的 Livewire 组件调用。
似乎如果任何第三方工具在 HTML 中初始化,那么它会再次触发渲染功能。
如何避免这种情况?任何帮助
【问题讨论】:
在这种情况下,您需要使用Deferred Updating。
在您不需要实时更新数据的情况下,Livewire 有一个 .defer 修饰符,可以根据下一个网络请求批量更新数据。
例如,给定以下组件:
<input type="text" wire:model.defer="query">
<button wire:click="search">Search</button>
当用户在该字段中键入时,不会发送任何网络请求。即使用户点击离开输入字段并点击页面上的其他字段,也不会发送任何请求。
当用户按下“搜索”时,Livewire 将发送一个网络请求,其中包含新的“查询”状态和要执行的“搜索”操作。
这可以在不需要时大大减少网络使用量。
【讨论】:
type="button" 并删除wirw:click 事件。这样就不会发生默认提交。
在按钮内使用防止事件修饰符
<input type="text" name="text_field_name" wire:model.defer="search_txt" />
<button type="button" wire:click.prevent="yourFunction">Seacrh</button>
【讨论】: