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 @livewireScripts ``` 【参考方案1】:

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参数&lt;livewire:counter :name="$name" /&gt;

【讨论】:

以上是关于Laravel Livewire 在挂载时总是出错,但芯片转储很好的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 和 Livewire:组件更改时如何执行 javascript 函数?

Laravel 和 Livewire 在单击时更改按钮样式

当我在 Laravel livewire 上单击事件时获得 404 模态

Laravel 8 livewire 在任务完成或在其外部单击页面时隐藏菜单组件

使用 Jetstream 在 Laravel 8 中添加新 Livewire 组件时如何解决 RootTagMissingFromViewException 错误

Laravel Livewire 分页