Методы LiveWire не работают на простом компоненте

#laravel #laravel-livewire

#laravel #laravel-livewire

Вопрос:

я создал новые простые компоненты для использования в liveWire , и я пытаюсь использовать этот компонент из одного маршрута, в приведенной ниже простой реализации increment и decrement не работает для меня

маршрут:

 Route::get('/login',LoginComponent::class);
 

LoginComponent::class :

 class LoginComponent extends Component
{
    public $count = 10;

    public function render()
    {
        return view('livewire.auth.login')->layout('livewire.auth.app');
    }

    public function increment()
    {
        $this->count  ;
    }

    public function decrement()
    {
        $this->count--;
    }
}
 

app.blade.php :

 <!DOCTYPE html>
<html lang="en">

<head>
    ...

    @livewireStyles
</head>

<body>
    <div class="page-content">
        <div class="content-wrapper">
            @yield('content')
        </div>
    </div>

    @livewireScripts
</body>

</html>
 

и затем login.blade.php :

 <div>
    @section('content')
        <div class="page-content">
            <div class="content-wrapper">
                <div class="content d-flex justify-content-center align-items-center">
                    <div style="text-align: center">
                        <button wire:click="increment">   </button>

                        <button wire:click="decrement"> - </button>

                        <h1>{{ $count }}</h1>
                    </div>
                </div>
            </div>
        </div>
    @endsection
</div>
 

Ответ №1:

Я бы рекомендовал использовать правильные методы рендеринга.

 return view('livewire.auth.login')
    ->extends('livewire.auth.app')
    ->section('content');
 

И удалите @section('content') из login.blade.php

Проверьте документы по компонентам рендеринга

Комментарии:

1. не могли бы вы уточнить, что произошло? я не понимаю меня в документах

Ответ №2:

Я попробовал более старый стиль @yield / @section Laravel, как описано в документации Livewire, и проблем не возникло.

Ваш app.blade.php кажется, все в порядке.

Но ваш метод визуализации LoginController должен использовать extends():

 public function render()
{
    return view('livewire.auth.login')->extends('livewire.auth.app');
}
 

И вы должны удалить @section из своего login.blade.php компонент.