【问题标题】:Laravel Livewire always errors at mount but die dumps fineLaravel Livewire 在挂载时总是出错,但芯片转储很好
【发布时间】: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 ```

标签: php laravel laravel-routing laravel-8 laravel-livewire


【解决方案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;

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2011-03-09
    • 2015-02-19
    • 2021-03-15
    • 2021-08-04
    • 2016-05-16
    • 2021-05-11
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多