Laravel:是不是可以在组件构造函数中使用 Spread 运算符?

Posted

技术标签:

【中文标题】Laravel:是不是可以在组件构造函数中使用 Spread 运算符?【英文标题】:Laravel : Is it possible to use the Spread operator in a component constructor?Laravel:是否可以在组件构造函数中使用 Spread 运算符? 【发布时间】:2021-09-18 22:08:24 【问题描述】:

我在 Laravel 8 中使用刀片组件系统。

我目前正在获取很多要传递给组件的参数。所以我正在寻找一种方法,通过扩展运算符将参数(或属性)从刀片模板传递到组件类构造函数中。

所以:

<x-mycmp regularA="something" regularB="somethingelse" custom="test" />

被理解为:

public function __construct ($regularA, $regularB, ...$addidionnalVars)

    // ...

“自定义”属性在 $addidionnalVars 数组中的位置。

目前,我遇到了“laravel Unresolvable dependency resolveing [Parameter #2 [ ...$addidionnalVars]] in class”错误。

有没有办法让它工作?

【问题讨论】:

【参考方案1】:

更新:下面的解决方案似乎只适用于Blade X

这曾经适用于 BladeX,也许它也适用于你?

<x-mycmp regularA="something" regularB="somethingelse" ...$spreadVariables/>

【讨论】:

我看到了这个,但我的目标是保持刀片标签简单并恢复所有属性而不在构造函数中指定所有属性。因为,我得到了带有 15 个以上参数的组件,其中很多是可选的。而且这些 var 的数量会随着时间的推移而增长,我确实想每次都重写构造函数。 您可以将它们作为数组或Data Transfer Object? 是的,我的第一个线索是创建一个特殊属性,:options="[...]",但我的首席开发人员不喜欢这样写。 但也许,这对刀片来说是不可能的 不幸的是,我认为这确实不可能。我个人认为Data Transfer Objects 是传递数据的方法。保持组件构造函数和视图干净。

以上是关于Laravel:是不是可以在组件构造函数中使用 Spread 运算符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 应用程序中为单个 vue 组件实现 s-s-r?

在 TypeScript 中使用 JS React 组件:JSX 元素类型“MyComponent”不是 JSX 元素的构造函数

我可以在反应组件的构造函数中使用箭头函数吗?

_vuex.default.store 不是构造函数

Laravel 5.3 auth 检查构造函数返回 false

Laravel 请求:直接在控制器构造函数中注入请求是正确的吗?