brand logo

ドキュメント

clearError

clearError コンポーザブルは、すべての処理されたエラーをクリアします。

ページ、コンポーネント、およびプラグイン内で、clearError を使用してすべてのエラーをクリアし、ユーザーをリダイレクトすることができます。

パラメータ:

  • options?: { redirect?: string }

オプションでリダイレクト先のパスを指定できます(例えば、「安全な」ページに移動したい場合など)。

// リダイレクトなし
clearError()

// リダイレクトあり
clearError({ redirect: '/homepage' })

エラーは useError() を使用して状態に設定されます。clearError コンポーザブルはこの状態をリセットし、提供されたオプションで app:error:cleared フックを呼び出します。

こちらも参照 getting-started > error-handling

tips

このセクションは公式ドキュメントの翻訳ではなく、本サイト独自の補足記事です。

NuxtのclearErrorとは?〜エラー状態を安全にリセットするための便利なコンポーザブル〜

Nuxtアプリケーション開発において、エラー処理はユーザー体験を左右する重要な要素です。useError()でエラー状態を管理している場合、エラーが解消されたタイミングで状態をクリアし、ユーザーを適切な画面に誘導したいことがよくあります。そんなときに役立つのがclearErrorコンポーザブルです。

clearErrorは、現在のエラー状態をリセットし、必要に応じて指定したページへリダイレクトも行えます。これにより、エラー表示を解除しつつ、ユーザーを安全なページに誘導することが可能です。


まず結論:clearErrorのポイントまとめ

  • clearError()useError()で設定されたエラー状態をリセットする
  • オプションでリダイレクト先を指定できる(例:clearError({ redirect: '/home' })
  • エラー状態のクリア時にapp:error:clearedフックが呼ばれる
  • ページ遷移やユーザー操作後にエラーをリセットしてUXを改善できる
  • SSR/CSR両方の環境で安全に使えるがHydrationのタイミングに注意が必要

いつ使うべき?使わない方がよいケースは?

使うべきケース

  • フォーム送信後にエラーが解消されたため、エラー表示を消したいとき
  • エラーページから安全なページへユーザーをリダイレクトしたいとき
  • 複数のエラー状態をまとめてリセットし、状態をクリーンに保ちたいとき
  • ページ遷移時に前のページのエラー状態を引き継ぎたくない場合

使わない方がよいケース

  • エラー内容をユーザーに引き続き表示したい場合(誤ってクリアすると混乱を招く)
  • エラー状態の管理をカスタムで行っていてuseError()を使っていない場合
  • エラーの原因調査やログ収集のためにエラー状態を保持したい場合

実務でよくあるユースケースとサンプルコード

1. フォーム送信後のエラーリセットとリダイレクト

ユーザーがフォームを送信し、エラーが解消されたらエラー表示を消してトップページへ戻す例です。

const submitForm = async () => {
  try {
    await api.submit(data)
    clearError({ redirect: '/' }) // エラークリア+トップページへ遷移
  } catch (e) {
    setError(e) // useError()でエラーをセット
  }
}

2. ページ遷移時に前ページのエラーをリセット

ページ間の遷移で古いエラーが残らないように、onBeforeRouteLeaveなどでクリアします。

import { clearError } from '#app'

export default {
  beforeRouteLeave(to, from, next) {
    clearError()
    next()
  }
}

3. モーダルやダイアログのエラー状態リセット

モーダルを閉じる際にエラーをリセットし、次回開いたときに前回のエラーが残らないようにします。

const closeModal = () => {
  clearError()
  isModalOpen.value = false
}

よくある落とし穴・注意点

SSRとCSRの違いによるHydration問題

clearErrorはクライアント側でエラー状態をリセットしますが、サーバー側でのエラー状態と同期が取れない場合、Hydration時に差異が生じることがあります。特に初期レンダリング時にエラーがある場合は、クライアントでのクリアタイミングに注意してください。

パフォーマンスへの影響

頻繁にclearErrorを呼び出すと、状態管理の再レンダリングが多発しパフォーマンスに影響する可能性があります。必要なタイミングでのみ呼び出すようにしましょう。

リダイレクト先の指定ミス

clearError({ redirect: '/somepath' })で指定するパスは必ず存在する安全なページを指定してください。存在しないパスを指定するとユーザーが404ページに飛ぶ可能性があります。


まとめ

clearErrorはNuxtのエラー管理をより柔軟にし、ユーザー体験を向上させる強力なツールです。エラー状態を安全にリセットし、必要に応じてリダイレクトも行えるため、フォーム処理やページ遷移時のエラークリアに最適です。ただし、SSR/CSRの違いやリダイレクト先の指定には注意が必要です。実務での活用例を参考に、適切なタイミングでclearErrorを使いこなしてみてください。


エラー状態をクリアした後に何か追加処理をしたい場合は、app:error:clearedフックを活用すると便利です。Nuxtのプラグインやミドルウェアでこのフックを監視し、ログ記録やUI更新を行えます。