isRouteErrorResponse
如果 路由错误 是一个路由错误响应,则返回 true
。
import { isRouteErrorResponse } from "react-router-dom";
function ErrorBoundary() {
const error = useRouteError();
if (isRouteErrorResponse(error)) {
return (
<div>
<h1>Oops!</h1>
<h2>{error.status}</h2>
<p>{error.statusText}</p>
{error.data?.message && <p>{error.data.message}</p>}
</div>
);
} else {
return <div>Oops</div>;
}
}
当从操作或加载器抛出响应时,它将被解包成一个 ErrorResponse
,这样您的组件就不必处理解包的复杂性(这将需要 React 状态和效果来处理从 res.json()
返回的 promise)。
import { json } from "react-router-dom";
<Route
errorElement={<ErrorBoundary />}
action={() => {
throw json(
{ message: "email is required" },
{ status: 400 }
);
}}
/>;
function ErrorBoundary() {
const error = useRouteError();
if (isRouteErrorResponse(error)) {
error.status; // 400
error.data; // { "message: "email is required" }
}
}