Laravel Livewire v4 (beta) でメモ帳アプリを作る

2025-11-23
ベータ版が公開されたので、試してみた。
Livewire v4 (beta)
Livewire v4 のベータ版が公開されました。
記事執筆時点の最新バージョンは v4.0.0-beta.3 です。
ドキュメントは下記のURLにあります。
⚠︎ 注意
ドキュメントに記載ありますが、
アクティブな開発が続いており安定版ではないため、プロダクション環境への適用はお勧めしません。
変更点
変更点はいろいろあるようです。
大きなところで言うと、Single-file component でしょうか。

v3 ではコンポーネント1つにつき2つのファイルが必要でした。
例:app/Livewire/TopPage.php
  resources/views/top-page.blade.php

v4 では Single-file component というものが登場し、blade にロジックを記述できるようになります。
</>
<?php

use App\Models\Memo;
use Livewire\Component;
use Livewire\Attributes\Computed;

new class extends Component
{
    #[Computed]
    public function memos()
    {
        return Memo::all();
    }
};
?>

<ul class="mt-6 space-y-3">
    @foreach ($this->memos as $memo)
        <li>{{ $memo->title }}</li>
    @endforeach
</ul>
アップグレードガイドが公開されておりますので、詳細はそちらをご確認ください。
メモ帳アプリを作る
シンプルなメモ帳アプリを作り、CRUD をひととおり見ていきます。
.memosapp.gif
コード
</>
1
メモ
レイアウトです。
ここで header や footer のコンポーネントを読み込みます。
UnoCSS でスタイリングをします。
トップページです。
ページタイトル <title> を Title Attribute で書いてます。
メモ一覧を取ってきて、ここでリスト表示します。
メモ作成ページです。
Validate Attribute でバリデーションをします。
デフォルトではファイルの先頭に絵文字がつくようですが、つけない設定にしてます。
立ち上げかた
</>
docker compose build
docker compose up
おわり
個人的にはこちらの方が好みです。
Svelte や Vue のコンポーネントに近づいて、書きやすくなった印象があります。