返回顶部
首页 > 资讯 > 精选 >Laravel Livewire如何使用
  • 621
分享到

Laravel Livewire如何使用

2023-07-04 18:07:22 621人浏览 薄情痞子
摘要

这篇文章主要讲解了“Laravel Livewire如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel Livewire如何使用”吧!Laravel Livewire是一个

这篇文章主要讲解了“Laravel Livewire如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel Livewire如何使用”吧!

Laravel Livewire是一个很好的工具,可以在页面上实现动态行为,无需直接编写 javascript 代码。而且,像任何工具一样,它有很多「隐藏的宝石」,包括官方文档和开发者提供的实用额外提示。

1. 不需要render()

典型的render()方法看起来像这样:

// app/Http/Livewire/Postsshow.PHPclass PostsShow extends Component{    public function render()    {        return view('livewire.posts-show');    }}

但是,如果你的render()方法只是一个单行来呈现 默认 视图,您可以从组件中删除该render()方法,它仍然可以工作,从供应商的方法加载默认为render()。【相关推荐:laravel视频教程

class PostsShow extends Component{    //这个空组件仍将工作并加载Blade文件}

2. 子文件夹中的组件

如果你想在子文件夹中生成一个组件,比如app/Http/Livewire/Folder/Component.php,你有两种方法:

php artisan make:livewire Folder/Component

或者

php artisan make:livewire folder.component

请注意,第一种方式是第一个字母大写,第二种方式是小写。在这两种情况下,都会生成两个文件:

  • app/Http/Livewire/Folder/Component.php

  • resources/views/livewire/folder/component.blade.php

如果子文件夹不存在,将自动创建它们。

3.非默认文件夹中的组件

如果您将某些外部包与 Livewire 组件一起使用,则您的 Livewire 组件可能位于与默认的 app/Http/Livewire 不同的文件夹中。您可能需要将其名称绑定到实际位置。

通常可以在app/Providers/AppServiceProvider.php(或任何服务提供者)方法boot()中完成:

class AppServiceProvider extends ServiceProvider{    public function boot()    {        Livewire::component('shopping-cart', \Modules\Shop\Http\Livewire\Cart::class);    }}

4.轻松重命名或移动组件

如果您在使用 make:livewire 生成组件时打错字,请不要担心。您不需要手动重命名两个文件,有一个命令供我们使用。

例如,如果您编写了php artisan make:livewire Prduct,但您想要「Product」,并且还决定将其放入子文件夹中,则可以使用以下命令进行改进:

php artisan livewire:move Prduct Products/Show

结果将是这样的:

COMPONENT MOVEDCLASS: app/Http/Livewire/Prduct.php    => app/Http/Livewire/Products/Show.phpVIEW:  resources/views/livewire/prduct.blade.php    => resources/views/livewire/products/show.blade.php

5.更改默认组件模板

Livewire 组件是使用默认模板生成的,即所谓的「存根」。它们隐藏在 Livewire 包的「vendor」文件夹中,但您也可以根据需要发布和编辑它们。

Run this command:

php artisan livewire:stubs

您会找到一个新文件夹 /stubs,其中包含一些文件。
stubs/livewire.stub 的示例:

<?phpnamespace [namespace];use Livewire\Component;class [class] extends Component{    public function render()    {        return view('[view]');    }}

例如,如果您想生成不使用 render() 方法的组件,只需将其从存根文件中删除,然后每次运行 php artisan make:livewire Component,它都会从您更新的模板中获取「公共存根」。

6. 不要为了设置值而创建方法

如果您有一个会设置某个属性的某个值的Click事件,您可以这样:

<button wire:click="showText">Show</button>

然后

class Show extends Component{    public $showText = false;    public function showText() {        $this->showText = true;    }}

但实际上,您可以直接从vender文件为Livewire属性赋一个新值,而不需要在Livewire组件中有单独的方法。

以下是代码:

<button wire:click="$set('showText', true)">Show</button>

因此,如果您的属性是一个布尔变量,并且希望有一个显示/FALSE按钮,则您需要调用$set并提供两个参数:您的属性名称和新值。

7. 更进一步:轻松设置 true/false

在上一个技巧之后,如果您的属性是一个带有true/false的布尔变量,并且您想要有一个显示/隐藏按钮,您可以这样:

<button wire:click="$toggle('showText')">Show/Hide</button>

注意:我个人会避免使用 Livewire 来实现这种简单的切换效果,因为它会向服务器添加额外的请求。

相反,最好使用 JavaScript,例如 Alpine.js

<div x-data="{ open: false }">    <button @click="open = true">Expand</button>    <span x-show="open">      Content...    </span></div>

8. 最小化服务器请求的三种方法

Livewire 的主要诟病之一是它对服务器的请求太多。如果您在输入字段中有wire:model,则每次击键都可能会调用服务器以重新渲染组件。如果您有一些实时效果,例如「实时搜索」,那将非常方便。但通常,就性能而言,服务器请求可能非常昂贵。

但是,自定义 wire:model 的这种行为非常容易。

  • wire:model.debounce:默认情况下,Livewire 在输入按键后等待 150 毫秒,然后再向服务器执行请求。 但您可以覆盖它:<input type="text" wire:model.debounce.1000ms="propertyName">

  • wire:model.lazy:默认情况下,Livewire 会监听输入上的所有**事件,然后执行服务器请求。 通过提供 lazy 指令,您可以告诉 Livewire 仅监听 change 事件。 这意味着用户可以继续输入和更改,并且只有当用户点击离开该字段时才会触发服务器请求。

  • wire:model.defer:这不会在输入更改时触发服务器请求。 它将在内部保存新值并将其传递给下一个网络请求,该请求可能来自其他输入字段或其他按钮的点击。

9.自定义验证属性

Livewire 验证的工作方式与 Laravel 验证引擎非常相似,但有一些不同之处。在 Laravel 中,如果你想自定义属性的名称,你可以定义 attributes() 方法 在表单请求类中。

在 Livewire 中,方法不同。 在组件中,您需要定义一个名为「$validationAttributes」的属性并在那里分配键值数组

class ContactFORM extends Component{    protected $validationAttributes = [        'email' => 'email address'    ];    // ...}

这对于常见的错误消息很有用,例如「需要字段 XYZ」。默认情况下,该 XYZ 被替换为字段名称,用户可能不会理解这个的词,因此应该将其替换为更清晰的错误消息。

10. 加载提示

从我所见,官方文档中描述但很少使用的东西。如果某些动作在屏幕上需要一段时间,则应该显示一些加载指示符,例如旋转的 gif,或者只是「正在加载数据…」的文本

在 Livewire 中,它不仅易于实现,而且还易于定制。

处理数据的最简单示例:当服务器发出请求时,它将显示「正在处理付款…」文本,直到服务器请求完成并返回结果。

<div>    <button wire:click="checkout">Checkout</button>    <div wire:loading>        Processing Payment...    </div></div>

在实践中,我喜欢仅在需要一段时间时才显示此类加载指示器。在所有可能的情况下,每次都重新渲染 DOM 是没有意义的。 如果我们只在请求时间超过 500 毫秒时才这样做呢?

这很简单:

<div wire:loading.delay.longer>...</div>

还有可能使用 CSS 类来加载状态,将它们附加到特定的操作,等等。

11. 离线指示器

Livewire 的另一个记录在案但鲜为人知的功能是告诉用户他们的互联网连接是否丢失。如果您的应用程序使用实时数据或屏幕上的多次更新,这将是非常有用的:您可能会模糊网页的某些部分并显示「离线」文本。

这也很简单:

<div wire:offline>    You are now offline.</div>

此外,正如我所提到的,您可以通过分配 CSS 类来模糊某些元素,如下所示:

<div wire:offline.class="bg-red-300"></div>

12. 使用 Bootstrap 框架分页

与 Laravel 类似,Livewire 默认使用来自 Tailwind 框架的分页样式。 幸运的是,它很容易覆盖,只需为属性提供不同的值:

class ShowPosts extends Component{    use WithPagination;    protected $paginationTheme = 'bootstrap';

您可以直接在 Livewire GitHub 存储库 中查看可用的分页设计。 在浏览时,我没有找到任何关于使用 Bootstrap 4 还是 Bootstrap 5 版本的信息。

13. No Mount:自动路由模型绑定

如果您想将对象传递给 Livewire 组件,这是一种典型的方法,使用 mount() 方法:

class ShowPost extends Component{    public $post;    public function mount(Post $post)    {        $this->post = $post;    }}

然后,在 Blade 的某个地方,使用:

@livewire('show-post', $post)

但是您是否知道,如果您为 Livewire 属性提供类型提示,路由模型绑定会自动生效?

class ShowPost extends Component{    public Post $post;}

就是这样,根本不需要mount()方法。

14.删除时的确认提示

如果您有一个「删除」按钮,并且您想在执行操作之前调用确认弹窗在 JavaScript 中,则此代码将无法在 Livewire 中正常工作:

<button wire:click="delete($post->id)"        onclick="return confirm('Are you sure?')">Delete</button>

对此有一些可能的解决方案,可能最优雅的方法是在 Livewire 事件发生之前停止它:

<button onclick="confirm('Are you sure?') || event.stopImmediatePropagation()"        wire:click="delete($post->id)">Delete</button>

event.stopImmediatePropagation() 如果确认结果是假的,将停止调用LiveWire方法。

您可以在this github issue discussion中找到一些其他可能的解决方案.

感谢各位的阅读,以上就是“Laravel Livewire如何使用”的内容了,经过本文的学习后,相信大家对Laravel Livewire如何使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Laravel Livewire如何使用

本文链接: https://lsjlt.com/news/346849.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Laravel Livewire如何使用
    这篇文章主要讲解了“Laravel Livewire如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel Livewire如何使用”吧!Laravel Livewire是一个...
    99+
    2023-07-04
  • laravel如何使用RabbitMQ
    这篇文章主要介绍“laravel如何使用RabbitMQ”,在日常操作中,相信很多人在laravel如何使用RabbitMQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel如何使用RabbitMQ...
    99+
    2023-06-22
  • laravel如何使用websocket
    什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得浏览器和服务器之间的实时通信变得更加容易。与HTTP请求不同,WebSocket连接是持久的,这意味着...
    99+
    2023-08-31
    php laravel websocket
  • Laravel中Middleware如何使用
    今天就跟大家聊聊有关Laravel中Middleware如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。PHP内置函数array_revers...
    99+
    2024-04-02
  • Laravel中Container如何使用
    Laravel中Container如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHPUnit测试下绑定在聊解析过程前...
    99+
    2024-04-02
  • Laravel队列如何使用
    这篇文章主要讲解了“Laravel队列如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel队列如何使用”吧!什么情况使用队列?耗时的,比如上传一个文件后进行一些格式的转化等。...
    99+
    2023-06-29
  • Laravel中如何使用Typescript
    本篇内容介绍了“Laravel中如何使用Typescript”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么使用 TypeScriptT...
    99+
    2023-07-04
  • Laravel的Tinker如何使用
    这篇文章主要介绍“Laravel的Tinker如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel的Tinker如何使用”文章能帮助大家解决问题。Laravel Tinker 的使用...
    99+
    2023-07-04
  • laravel如何使用redis队列
    这篇文章将为大家详细讲解有关laravel如何使用redis队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、队列配置文件是config/queue.php(这里我默认配置即可):2、 创建迁移表(f...
    99+
    2023-06-14
  • 如何在 Laravel 中使用 Python?
    Laravel 是一个流行的 PHP 框架,它提供了一个简单而强大的平台,用于构建 Web 应用程序。Python 是一种高级编程语言,具有强大的数据处理和分析能力。在本文中,我们将介绍如何在 Laravel 中使用 Python,以及如何...
    99+
    2023-06-18
    面试 javascript laravel
  • 如何在Laravel中使用Tailwind CSS?
    Tailwind Tailwind是新的CSS实用程序框架,它很快成为我最喜欢的构建界面的方法。通常,尝试一个新的框架、包或语言的最困难的部分是建立起来。建造Tailwind的人做了一项令人难以置信的工作,记录了这个过程,而且非常容易做到。...
    99+
    2024-04-02
  • laravel中has方法如何使用
    这篇文章主要介绍“laravel中has方法如何使用”,在日常操作中,相信很多人在laravel中has方法如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel中has方法如何使用”的疑惑有所...
    99+
    2023-06-22
  • laravel中如何使用with方法
    这篇文章主要为大家展示了“laravel中如何使用with方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laravel中如何使用with方法”这篇文章吧。在laravel中,with()方法...
    99+
    2023-06-26
  • AWS S3在Laravel中如何使用
    今天小编给大家分享一下AWS S3在Laravel中如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。AWS S3 为我...
    99+
    2023-06-29
  • Laravel模型事件如何使用
    这篇“Laravel模型事件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel模型事件如何使用”文章吧。我...
    99+
    2023-07-04
  • Laravel的Many-To-Many如何使用
    这篇文章主要介绍“Laravel的Many-To-Many如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel的Many-To-Many如何使用”文章能帮助大家解决问题。在实际的开发...
    99+
    2023-07-04
  • laravel自动路由如何使用
    本篇内容主要讲解“laravel自动路由如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel自动路由如何使用”吧!第一个版本一.功能优点1。自动匹配控制器例如:网址:localh...
    99+
    2023-07-04
  • 如何在php中使用Laravel接口
    如何在php中使用Laravel接口?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypert...
    99+
    2023-06-14
  • 如何在Laravel中使用Python函数?
    Laravel是一个流行的PHP框架,它提供了许多功能和工具来帮助开发人员构建高质量的Web应用程序。Python是一种强大的编程语言,可以用于多种应用领域,包括数据分析、机器学习和自然语言处理等。在本文中,我们将探讨如何在Laravel中...
    99+
    2023-06-05
    git 函数 laravel
  • 如何使用Laravel IDE Helper提示工具
    小编给大家分享一下如何使用Laravel IDE Helper提示工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!安装安装 larave-ide-helper#...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作