Livewire中如何在其他组件内注册引用子组件并解决调用报错
问题解决方法
你遇到的报错核心是Livewire无法匹配到你调用的组件别名,可按以下两种方案任选其一解决:
方案1:使用默认自动注册规则调用(无需手动注册)
Livewire会自动扫描App\Http\Livewire命名空间下的组件,按照「子目录.烤串式类名」的规则生成默认调用别名,你当前的调用写法多了冗余的livewire前缀,修正父组件视图里的调用代码即可:
<div> <div class="max-w-7xl mx-auto py-10 sm:px-6 lg:px-8"> {{-- 去掉前缀的livewire,直接按子目录+类名烤串形式调用 --}} @livewire('person.own-person-update') {{-- Livewire 3也支持语法:<livewire:person.own-person-update /> --}} </div> </div>
使用该方案需要确认:
- 子组件类文件路径为
app/Http/Livewire/Person/OwnPersonUpdate.php,和你给出的命名空间一致 - 子组件对应的视图文件路径为
resources/views/livewire/person/own-person-update.blade.php
方案2:手动注册组件自定义别名
如果希望用更短的别名调用,可在项目的Livewire服务提供者中手动注册组件:
- 打开
app/Providers/LivewireServiceProvider.php文件,在boot方法中添加注册代码:
<?php namespace App\Providers; use Livewire\Livewire; use Illuminate\Support\ServiceProvider; use App\Http\Livewire\Person\OwnPersonUpdate; class LivewireServiceProvider extends ServiceProvider { public function boot() { // 注册自定义别名,第一个参数是你想要的调用名,第二个是组件类 Livewire::component('own-person-update', OwnPersonUpdate::class); } }
- 之后在父组件中直接用你注册的别名调用即可:
@livewire('own-person-update')
内容的提问来源于stack exchange,提问作者Cesar Fuentes
相关产品推荐
相关产品推荐

