Livewire 安装与渲染

Jav*_*leo 3 laravel eloquent laravel-livewire

我想了解 Livewire 组件中的 mount 和 render 方法之间有什么区别,因为我见过两者都用于定义变量初始状态的示例。例如,当您使用模型中的记录实例化变量时,\xc2\xbf哪个是使用 ORM 语法加载数据的正确位置?

\n

Qir*_*rel 8

mount()方法就是所谓的“生命周期挂钩”。Livewire 中还有更多此类方法,官方文档中概述了这些方法 - https://laravel-livewire.com/docs/2.x/lifecycle-hooks - 而这render()是调用的最终方法渲染实际视图。

mount()方法是组件的构造。您可以在此处传递组件所需的数据。此方法仅在组件初始化时调用一次,这意味着您通常也可以在其中设置非常量的初始值。

但是,由于 Livewire 组件的公共属性只能是集合、模型实例、数组或本机 PHP 类型(如字符串和整数),因此您无法传递更多依赖于状态的“高级”类型 - 例如模型查询的分页。

这就是为什么有时需要通过render()方法将数据传递给组件,就像在普通 Laravel 控制器中返回数据时一样。在这里传递数据的另一个原因是数据不像组件的公共属性那样在 JavaScript 中公开。

render()方法在每个生命周期请求结束时、组件脱水之前调用。官方文档有更详细的信息https://laravel-livewire.com/docs/2.x/rendering-components#render-method - 此处定义的数据不是该类的属性,因此无法在其他类中访问组件中的方法。

因此,要回答您的问题,这取决于您传递的数据类型,数据是否应该可以在类中的其他方法中访问,或者数据是否敏感,以至于它不应该在附加到组件的 JavaScript 对象中可见。