laravel - Livewire 安装与渲染

标签 laravel eloquent laravel-livewire

我想了解 Livewire 组件中的挂载和渲染方法有什么区别,因为我看到过这两种方法都用于定义变量初始状态的示例。例如,当您使用模型中的记录实例化一个变量时,“哪个位置是使用 ORM 语法加载数据的正确位置?”

最佳答案

mount() 方法就是所谓的“生命周期 Hook ”。 Livewire 中还有一些此类方法,官方文档中对此进行了概述 - https://laravel-livewire.com/docs/2.x/lifecycle-hooks - 而 render() 是调用以呈现实际 View 的 final方法。

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

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

这就是为什么您有时需要通过 render() 方法将数据传递给组件,就像您在普通 Laravel Controller 中返回数据时所做的那样。在此处传递数据的另一个原因是数据未在 JavaScript 中公开,就像组件的公共(public)属性那样。

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

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

关于laravel - Livewire 安装与渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68249919/

相关文章:

Laravel cursorPagination 返回混合了数组和对象的结果

php - Laravel Eloquent ORM 返回 stdClass 而不是 Model 实例

php - 为数据库中的两个新表创建模型和关系

php - Laravel 在命名空间中找不到类

laravel - Livewire 如何在选择更改时 $emit 事件(电线 :model)

php - Livewire-Laravel-Alpine : Emit event on validation errors including all errors on errorbag

php - Transaction () - Laravel 5 中的查询生成器抛出错误

javascript - 如何在 GraphQL 中进行相关突变?

php - 中间表和 Laravel

laravel - 将变量绑定(bind)到原始查询