Livewire

Installing Livewire and Creating the Component

composer require livewire/livewire

First Project Example

welcome.blade

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="/css/app.css" rel="stylesheet">
        <script src="/js/app.js"></script>

    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
            @if (Route::has('login'))
                <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
                    @auth
                        <a href="{{ url('/home') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Home</a>
                    @else
                        <a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
                        @endif
                    @endauth
                </div>
            @endif

            <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
                <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                    <livewire:counter />
                </div>
            </div>
            @livewireScripts
        </div>
    </body>
</html>

php artisan make:livewire counter --inline

app\Http\Livewire\Counter.php

<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Counter extends Component
{
    public $count = 0;
    public function increment(){
        $this->count++;
    }

    public function render()
    {
        return <<<'blade'
            <div class="counter">
                        <span>{{$count}}</span>
                        <button wire:click="increment">+</button>
            </div>
        blade;
    }
}