laravel - 将 laravel livewire 事件从孩子发送给父母会导致指纹错误
问题描述
将事件从子容器发送到父容器时出现此错误。我wire:key
按照建议使用,但收到 JS 错误Cannot read property 'fingerprint' of null
。任何想法我做错了什么?请看下面的例子。
容器
class Container extends Component
{
public $listeners = [
'submit'
];
public function render()
{
return view('livewire.container');
}
public function submit()
{
//dd("The child says wow - it works!");
}
}
有视野
<div>
<h1>Im the container</h1>
@foreach([1,2,3] as $nbr)
@livewire('child', compact('nbr'))
@endforeach
</div>
孩子
class Child extends Component
{
public $nbr;
public function mount($nbr)
{
$this->nbr = $nbr;
}
public function render()
{
return view('livewire.child');
}
public function submit()
{
$this->emit('submit', 'wow!');
}
}
有视野
<div wire:key="{{ $nbr }}">
Hey im a child
<button wire:click="submit">submit</button>
</div>
解决方案
在循环中定义 Livewire 组件时,您需要给它们一个键,以便 Livewire 可以跟踪每个单独的组件。
<div>
<h1>Im the container</h1>
@foreach([1,2,3] as $key=>$nbr)
@livewire('child', compact('nbr'), key($nbr))
@endforeach
</div>
这是在组件上完成的,而不是在视图中的根元素上完成的,这意味着它被错误地放置wire:key="{{ $nbr }}"
在您的子视图中。
推荐阅读
- spring-boot - spring data lovelace m3 和 spring boot 2.0
- amazon-web-services - 如何提示 AWS SNS 向 Cloudformation 创建的订阅发送确认消息?
- android - 我可以从突然消失的 GO Note android 小部件中恢复我的列表吗?
- mongodb - AWS EKS - kubectl 日志 [pod 名称]
- kotlin - 用 mockk 模拟 OffsetDateTime.now
- javascript - 密码验证码每次随机测试都没有通过,不明白为什么?
- bash - 在bash中删除带有大写字母的单词
- gradle-plugin - Gradle 设置 groovy 文件到 kts 文件
- c++ - 提高基于组件的游戏引擎的效率
- android - Android Studio 在约束布局中嵌套 ScrollView