我已经使用Laravel livewire已有一段时间了,我有一个嵌套的组件,这是我网站的产品列表,在该列表内,我还有另一个用于将产品添加到愿望清单的组件。根据这里所说的文件,它说
“类似于VueJs,如果在循环中渲染组件,Livewire无法跟踪哪个组件。Livewire提供了一种特殊的“键”语法来对此进行补救:”
像这样:
<div>
@foreach ($users as $user)
@livewire('user-profile', $user, key($user->id))
@endforeach
</div>
这是我的项目中的代码片段。
<div>
@foreach($products as $product)
<div class="product-box white-bg mb-8" data-dusk="product">
{{-- here im passing product id as param in key(), 'productList' is a static value for a variable of mount(). --}}
@livewire('desktop.wish-list-add', $product, key($product->id), 'productList')
<div class="product-content d-flex justify-content-between align-items-center p-5">
...............
@endforeach
{{ $products->links() }}
</div>
问题是当我尝试将$ product-> id作为key()的参数传递时,它给出了错误
key() expects parameter 1 to be array, integer given
但是该文档清楚地表明,我们必须将id作为参数传递。到目前为止,有人遇到过这个问题吗?
好的,我找到了解决方案(但是对我来说没有意义,但是它可以正常工作:/),您必须像下面这样为mount()传递其他参数:
@livewire('desktop.wish-list-add', 'productList', $product->id, key($product->id))
代替这个:
@livewire('desktop.wish-list-add', $product, key($product->id), 'productList')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句