> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# useMfaPolling

<ParamField body="useMfaPolling(options?: MfaPollingOptions)" type={<span><a href="/docs/ja-jp/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult">MfaPollingResult</a></span>}>
  Auth0 Advanced Customization of Universal Login (ACUL) の画面で、
  MFA プッシュのポーリング (例: プッシュ通知の承認待ち) を管理するための React フックです。

  このフックは、次のいずれかが発生するまで、
  MFA プッシュチャレンジのエンドポイントを繰り返し確認する長時間実行のポーリングループを設定し、制御します。

  * チャレンジがユーザーによって**承認または拒否**され、`options.onCompleted` が呼び出される。
  * **エラー**が発生し (ネットワークエラー、200/429 以外のレスポンス) 、`options.onError` が呼び出される。
  * **コンポーネントがアンマウントされる**か `stopPolling()` が呼び出され、ポーリングがキャンセルされる。

  ### 主な機能

  * `isRunning` は**リアクティブ**です — ポーリングループが内部で
    停止またはキャンセルされると、自動的に更新されます。
  * **安定した単一のポーリングインスタンス** (`useRef`) を使用して、
    重複したネットワーク呼び出しや、React の再レンダリング中の意図しない再開を防ぎます。
  * アンマウント時の**自動クリーンアップ**: 孤立したタイマーやリークした XHR リクエストは発生しません。

  ## パラメータ

  <ParamField body="options" type={<span><a href='/docs/ja-jp/libraries/acul/react-sdk/API-Reference/Types/type-aliases/MfaPollingOptions'>MfaPollingOptions</a></span>}>
    ポーリング間隔、成功時のコールバック (`onCompleted`) 、および任意のエラーハンドラー (`onError`) を指定します。
  </ParamField>

  ## 戻り値

  以下を含む [`MfaPollingResult`](/docs/ja-jp/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult) を返します:

  * `isRunning` — ポーリングがアクティブな間は `true`。
  * `startPolling()` — ポーリングを開始または再開します。
  * `stopPolling()` — ポーリングを即座に停止します。

  ## サポート対象の画面

  * `mfa-push-challenge-push`
  * `reset-password-mfa-push-challenge-push`
  * `mfa-push-enrollment-qr`

  ```tsx Example theme={null}
  import { useMfaPolling } from '@auth0/auth0-acul-react/mfa-push-challenge-push';

  export function MfaPushStatus() {
    const { isRunning, startPolling, stopPolling } = useMfaPolling({
      intervalMs: 5000,
      onCompleted: () => console.log('Push approved!/denied'),
      onError: (error) => console.error('Polling error:', error)
    });

    return (
      <div>
        <button onClick={startPolling} disabled={isRunning}>
          {isRunning ? 'Waiting for approval…' : 'Start MFA Polling'}
        </button>
        {isRunning && <button onClick={stopPolling}>Cancel</button>}
      </div>
    );
  }
  ```

  ## 備考

  * `onError` コールバックは、サーバーレスポンスの内容を示す `status` と `responseText` を含む
    [ULError](/docs/ja-jp/libraries/acul/react-sdk/API-Reference/Types/interfaces/Error) オブジェクトを受け取ります。
  * 内部のレート制限レスポンス (`429`) は自動的に処理されます:
    ポーリングはリセットウィンドウまで待機してから再試行します。
  * 実行中に `startPolling()` を繰り返し呼び出しても安全で、冪等です。
</ParamField>
