0

提前感谢您提供有用的建议。我使用Laravel Livewire创建组件,使用Jetstrap对需要它的路由进行身份验证。

目前我只设置了一个用于测试身份验证的路由,但在我登录查看该路由后,我收到以下错误:

Too few arguments to function Livewire\LivewireManager::mount(), 0 passed in /var/www/mvp/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 261 and at least 1 expected

这似乎源自 getInstance() 函数内部的 LivewireManager 类:

public function getInstance($component, $id)
    {
        $componentClass = $this->getClass($component);

        throw_unless(class_exists($componentClass), new ComponentNotFoundException(
            "Component [{$component}] class not found: [{$componentClass}]"
        ));

        return new $componentClass($id);
    }

它似乎期待来自 Facade 类的组件参数/vendor/laravel/framework/src/Illuminate/Support/Facades/,但没有得到它需要的组件。我检查了页面代码,那里肯定有一个组件。

产生错误的 Facade 函数:

/**
     * Handle dynamic, static calls to the object.
     *
     * @param  string  $method
     * @param  array  $args
     * @return mixed
     *
     * @throws \RuntimeException
     */
    public static function __callStatic($method, $args)
    {
        $instance = static::getFacadeRoot();

        if (! $instance) {
            throw new RuntimeException('A facade root has not been set.');
        }
        
        return $instance->$method(...$args);
    }

以及应该加载其组件的页面:

@extends('layouts.app')
@section('content')
@livewire('component')
@stop

有没有解决问题的简单方法?还是我错过了什么?

4

1 回答 1

0

当我尝试传递参数时,我遇到了与您遇到的相同的错误,然后我通过遵循文档来解决问题,将 livewire 组件的渲染方式从使用刀片指令更改@livewire()<livewire: >

于 2021-07-06T04:54:51.150 回答