You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

react-router-dom中useRouteError()返回的error正确类型是什么?

React Router中useRouteError()返回值的正确类型

问题

在React项目里用react-router-dom的useRouteError()捕获路由错误时,当前把error声明为any类型,想换成正确的类型来提升代码健壮性,示例代码如下:

import { useRouteError } from 'react-router-dom'

const ErrorPage: React.FC = () => {
  const error: any = useRouteError() // 需要替换成合适类型
  return (
    <div
      id='error-page'
      className='flex flex-col gap-8 justify-center items-center h-screen'
    >
      <h1 className='text-4xl font-bold'>Oops!</h1>
      <p>Sorry, an unexpected error has occurred.</p>
      <p className='text-slate-400'>
        <i>{error.statusText || error.message}</i>
      </p>
    </div>
  )
}

export default ErrorPage

解决方案

react-router-dom内置了**RouteError**类型,专门用于useRouteError()的返回值,直接从库中导入即可使用。这个类型包含了路由错误场景下的常见属性(如status、statusText),同时兼容原生Error类型的message等属性。

修改后的代码:

import { useRouteError, RouteError } from 'react-router-dom'

const ErrorPage: React.FC = () => {
  const error = useRouteError() as RouteError;
  return (
    <div
      id='error-page'
      className='flex flex-col gap-8 justify-center items-center h-screen'
    >
      <h1 className='text-4xl font-bold'>Oops!</h1>
      <p>Sorry, an unexpected error has occurred.</p>
      <p className='text-slate-400'>
        <i>{error.statusText || error.message}</i>
      </p>
    </div>
  )
}

export default ErrorPage

如果你的项目有自定义错误属性的需求,可以扩展RouteError类型:

type CustomRouteError = RouteError & {
  customMessage?: string;
};

// 使用时
const error = useRouteError() as CustomRouteError;

内容的提问来源于stack exchange,提问作者Sadik Saifi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:07:11