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

ReactJS中已添加Link标签仍无法重定向到错误页面该如何解决

问题根因
return (<Link> 是React Router提供的声明式导航组件,仅可在JSX渲染上下文生效。你在异步请求的catch回调中直接书写<Link>标签,只会生成一个未被渲染的React元素对象,不会触发任何跳转逻辑。

# 解决方案
根据你使用的React Router版本选择对应方案:
## React Router v6(当前主流版本)
如果请求逻辑写在React组件内部,使用`useNavigate`钩子实现命令式跳转:
1. 组件内导入并初始化导航方法
```js
import { useNavigate } from 'react-router-dom';

// 组件内部代码
const navigate = useNavigate();
```
2. 404异常触发时调用导航方法,错误数据通过state参数传递
```js
const fetchData = async () => {
  try {
    const data = await instance.get(url);
    // 正常处理响应数据
  } catch (error) {
    if (error.response?.status === 404) {
      navigate('/error', {
        state: { err: error.response.data }
      });
      console.log("Page Not Found");
    }
  }
}
```
3. ErrorPage组件内接收传递的错误数据
```js
import { useLocation } from 'react-router-dom';

const ErrorPage = () => {
  const { state } = useLocation();
  const err = state?.err;
  // 渲染错误内容
}
```

## React Router v5
使用`useHistory`替代`useNavigate`即可:
```js
import { useHistory } from 'react-router-dom';

// 组件内部初始化
const history = useHistory();

// 404时跳转逻辑
history.push('/error', { err: error.response.data });
```

# 注意事项
- 请确保已在路由配置中注册`/error`路径与ErrorPage组件的映射关系
- 如果请求逻辑封装在独立的非组件JS文件中,可以将navigate/history实例作为参数传入请求方法,或通过全局事件总线监听异常触发跳转

内容的提问来源于stack exchange,提问作者Gautam Kothari)
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:42:01