Livewire 安装与渲染
Livewire Mount vs. Render
我想了解 Livewire 组件中的挂载和渲染方法有什么区别,因为我看到过这两种方法都用于定义变量初始状态的示例。例如,当您使用模型中的记录实例化一个变量时,“哪个是使用 ORM 语法加载数据的正确位置?
mount 方法就像任何构造函数一样,您可以在多种情况下使用它,在其他情况下您不需要它。例如,如果您有一个嵌套组件到一个完整的页面组件中,但最初嵌套属性为 null 或需要任何定义,您可以在那里定义它。也用于路由模型绑定定义,但您需要清楚,您在此处声明的任何定义在初始化组件后都不会更新、混合或遭受任何更改。大多数情况下,这是与 render 方法的区别。
mount()
方法就是所谓的“生命周期挂钩”。 Livewire 中还有一些此类方法,在官方文档中进行了概述 - https://laravel-livewire.com/docs/2.x/lifecycle-hooks - 而 render()
是调用以呈现实际视图的最终方法。
mount()
方法是组件的构造。这是您传入组件所需数据的地方。此方法仅在组件初始化时调用一次,这意味着它通常也是您设置非常量初始值的地方。
但是,由于 Livewire 组件的 public 属性只能是集合、模型实例、数组或原生 PHP 类型,如字符串和整数,您不能传递更多 "依赖于状态的高级”类型 - 例如模型查询的分页。
这就是为什么您有时需要通过 render()
方法将数据传递给组件的原因,就像您在普通 Laravel 控制器中返回数据时所做的那样。在此处传递数据的另一个原因是数据未在 JavaScript 中公开,就像组件的 public 属性一样。
render()
方法在每个生命周期请求结束时调用,但在组件脱水之前。官方文档有更详细的信息 https://laravel-livewire.com/docs/2.x/rendering-components#render-method - 此处定义的数据不是 class 的 属性,因此无法在组件的其他方法中访问。
所以要回答你的问题,这取决于你传递的数据类型,数据是否应该可以在 class 中的其他方法中访问,或者它是否敏感以至于不应该在附加到组件的 JavaScript 对象中可见。
我想了解 Livewire 组件中的挂载和渲染方法有什么区别,因为我看到过这两种方法都用于定义变量初始状态的示例。例如,当您使用模型中的记录实例化一个变量时,“哪个是使用 ORM 语法加载数据的正确位置?
mount 方法就像任何构造函数一样,您可以在多种情况下使用它,在其他情况下您不需要它。例如,如果您有一个嵌套组件到一个完整的页面组件中,但最初嵌套属性为 null 或需要任何定义,您可以在那里定义它。也用于路由模型绑定定义,但您需要清楚,您在此处声明的任何定义在初始化组件后都不会更新、混合或遭受任何更改。大多数情况下,这是与 render 方法的区别。
mount()
方法就是所谓的“生命周期挂钩”。 Livewire 中还有一些此类方法,在官方文档中进行了概述 - https://laravel-livewire.com/docs/2.x/lifecycle-hooks - 而 render()
是调用以呈现实际视图的最终方法。
mount()
方法是组件的构造。这是您传入组件所需数据的地方。此方法仅在组件初始化时调用一次,这意味着它通常也是您设置非常量初始值的地方。
但是,由于 Livewire 组件的 public 属性只能是集合、模型实例、数组或原生 PHP 类型,如字符串和整数,您不能传递更多 "依赖于状态的高级”类型 - 例如模型查询的分页。
这就是为什么您有时需要通过 render()
方法将数据传递给组件的原因,就像您在普通 Laravel 控制器中返回数据时所做的那样。在此处传递数据的另一个原因是数据未在 JavaScript 中公开,就像组件的 public 属性一样。
render()
方法在每个生命周期请求结束时调用,但在组件脱水之前。官方文档有更详细的信息 https://laravel-livewire.com/docs/2.x/rendering-components#render-method - 此处定义的数据不是 class 的 属性,因此无法在组件的其他方法中访问。
所以要回答你的问题,这取决于你传递的数据类型,数据是否应该可以在 class 中的其他方法中访问,或者它是否敏感以至于不应该在附加到组件的 JavaScript 对象中可见。