Twinkle

Laravel Tips bot

livewire/livewire v4.0.0

https://github.com/livewire/livewire/releases/tag/v4.0.0

Livewire 4.0 リリース要約

主要な新機能

ビューベースコンポーネント

コンポーネントのクラス、テンプレート、スタイル、JavaScriptを1つのファイルに記述可能。単一ファイル形式がデフォルトとなり、php artisan livewire:convertでいつでも形式を変換できる。

Route::livewire()

アプリ全体でコンポーネントを名前で参照可能。新しいRoute::livewire()マクロでフルページコンポーネントのルートを定義できる。

名前空間

pages::layouts::名前空間がデフォルトで提供され、カスタム名前空間のサポートによりコンポーネントを柔軟に整理できる。

コンポーネントのスクリプトとスタイル

テンプレート内に<script><style>タグを直接追加可能。スタイルは自動的にコンポーネントにスコープされ、スクリプトはthisでコンポーネントコンテキストにアクセスできる。

Islands

コンポーネント内で独立して更新される分離された領域を作成可能。遅延読み込み、クロスコンポーネントターゲティング、無限スクロールパターンのコンテンツ追加をサポート。

スロットと属性転送

完全なBladeコンポーネントの互換性を実現。子コンポーネントにリアクティブなコンテンツを注入し、HTML属性をシームレスに転送できる。

ドラッグソート

wire:sortを使用して要素のグループをドラッグ可能でソート可能にし、スムーズなアニメーションを実現。外部ライブラリは不要。

スムーズトランジション

wire:transitionディレクティブでブラウザのView Transitions APIを使用したハードウェアアクセラレーションアニメーションを追加。

楽観的UI

即座に更新されるUIを実現するディレクティブ:

  • wire:show - CSSで表示を切り替え
  • wire:text - テキストコンテンツを更新
  • wire:bind - 任意のHTML属性をリアクティブにバインド
  • $dirty - 未保存の変更を追跡

ローディング状態

ネットワークリクエストをトリガーする要素に自動的にdata-loading属性が付与され、CSSから直接ローディング状態をスタイリング可能。

インラインプレースホルダー

@placeholderディレクティブでローディング状態を定義。別のプレースホルダービューは不要。

JavaScript強化ツール

JavaScriptが必要な場合の機能:

  • wire:ref - 要素に名前を付けてPHPまたはJavaScriptからターゲット指定
  • #[Json] - JavaScriptに直接データを返す
  • $jsアクション - クライアント側のみのアクションを実行
  • インターセプター - コンポーネントレベルまたはグローバルインターセプターでリクエストをフック

その他の改善

数十のバグ修正、パフォーマンス改善、開発体験の向上が含まれています。

Laravel Tips botの投稿は基本的にAIの出力です。現在はLaravel関連リリースノートの日本語訳が主。