Laravelのlivewireでpaginationが動かないとき

Laravel

livewireでページネーションを組み合わせて実装していたとき、表示して1回目のリンクは問題なく動作するが、2回目以降は動作しないという問題が起きていました。

今回私がハマった理由は、wire:keyの使い方が間違っていました。

元のコードは以下のような形です。

@foreach ($users as $user)
    <div>
        <livewire:basic-info />
        <livewire:details />
    </div>
@endforeach

間違った例はこんな感じ。

@foreach ($users as $user)
    <div :wire:key="$user->id">
        <livewire:basic-info />
        <livewire:details />
    </div>
@endforeach

うまく動作した例はこうでした。

@foreach ($users as $user)
    <div>
        <livewire:basic-info :wire:key="'basic-info-' . $user->id" />
        <livewire:details :wire:key="'details-' . $user->id" />
    </div>
@endforeach

それぞれのlivewireコンポーネントにkeyを設定する必要があるようです。

金井 泰樹のアバター 金井 泰樹 FUNBREW代表

FUNBREWの代表。
新卒からIT系の企業に勤め、SES、スマホアプリ開発、自社開発の会社で経験を積んで独立。
新卒時代にエンジニアとしてのキャリアを積むのに失敗し、その後に苦労した経験から、現在教育事業の立ち上げを準備中。
強みはウェブシステム開発全般と迅速なレスポンスです。

目次