Livewireは、wire:poll
名前のディレクティブを提供しています。このディレクティブを要素に追加すると、2s
ごとにコンポーネントを更新します。
{tip} Ajaxの変更をポーリングすることは、Laravel Echo、Pusher、WebSocketなどを使用する戦略に代わる、軽量でシンプルな方法です。
<div wire:poll>
Current time: {{ now() }}
</div>
750ms
のようなディレクティブ修飾子を渡すことで間隔をカスタマイズできます。例をご覧ください
<div wire:poll.750ms>
Current time: {{ now() }}
</div>
wire:poll
に値を渡し、ポーリング間隔で起動する特定のアクションを指定することもできます。
<div wire:poll="foo">
Current time: {{ now() }}
</div>
これで、コンポーネントの
foo
メソッドを2秒ごとに呼び出します。
バックグラウンドでのポーリング
Livewireは、ブラウザータブがバックグラウンドにある場合のポーリングを減らし、ajaxリクエストでサーバーへ不必要な負担をかけないようにします。予想されるポーリングリクエストの約5%のみが持続されます。
タブがバックグラウンドにある場合でも通常のレートでポーリングを継続したい場合は、keep-alive
修飾子を使用します。
<div wire:poll.keep-alive>
Current time: {{ now() }}
</div>
要素が可視の場合のみのポーリング
コンポーネントが常にブラウザのビューポートに表示されていない場合(例えば、ページの下の方など)、wire:poll
に.visible
修飾子を追加し、要素が表示されているときにのみサーバとポーリングするように設定できます。例えば、以下のように行います。
<div wire:poll.visible></div>