Laravel Livewire 在挂载时总是出错,但芯片转储很好
Posted
技术标签:
【中文标题】Laravel Livewire 在挂载时总是出错,但芯片转储很好【英文标题】:Laravel Livewire always errors at mount but die dumps fine 【发布时间】:2021-07-09 08:34:30 【问题描述】:似乎是什么问题:Livewire 安装似乎在我身上出错,但很好地死掉了。 重现步骤:只需简单地将路由参数渲染到组件。 您是否使用最新版本的 Livewire:是 2.4
我的路线
Route::get('name', Counter::class);
我的组件刀片文件
<div style="text-align: center">
<button wire:click="increment"></button>
<h1>$name</h2>
</div>
我的组件类
public $count = 0;
public $name;
public function mount($name)
$this->name = $name;
然后它给了我这个错误 Illuminate\Contracts\Container\BindingResolutionException 无法解析类 App\Http\Livewire\Counter 中的依赖项 [Parameter #0 [ $name ]](视图:E:\wamp64\www\test\resources\views\layouts\app.blade.php)
【问题讨论】:
public $name = '';
时发生了什么
同样,我使用的是内联组件,但是当我将其更改为整页时它可以工作,不知道为什么,我的目标是在内联组件中获取参数。
你如何使用你的内联组件?
是的,例如,看起来像一个整页组件
``` @livewireStyles Livewire 会将路由参数传递给整页组件,但是调用内联组件时需要传递所需的属性,它们不会自动解析。
<livewire:counter :name="$name" />
【讨论】:
这给了我undefined variable : name
的错误,我的目标是将参数传递给内联组件,我的内联组件位于 layouts/app.blade.php 文件中。
您需要将$name
传递给app.blade.php
,无论哪个控制器都可以渲染它。
哦,所以我需要从app.blade.php
文件开始传递所有必要的信息?
是的,如果您不使用带有路由参数的整页组件,则需要提供$name
。【参考方案2】:
当你使用@livewire('counter')
时你不需要传递name参数,因为刀片引擎已经这样做了,但是当你使用刀片组件时你必须传递name参数<livewire:counter :name="$name" />
【讨论】:
以上是关于Laravel Livewire 在挂载时总是出错,但芯片转储很好的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 和 Livewire:组件更改时如何执行 javascript 函数?
当我在 Laravel livewire 上单击事件时获得 404 模态
Laravel 8 livewire 在任务完成或在其外部单击页面时隐藏菜单组件
使用 Jetstream 在 Laravel 8 中添加新 Livewire 组件时如何解决 RootTagMissingFromViewException 错误