在React Router中,如何处理路由的404错误页面?

简介: 在React Router中,如何处理路由的404错误页面?

在 React Router 中,不同版本处理 404 错误页面的方式有所不同,下面分别介绍 React Router v5 和 v6 处理 404 错误页面的方法。

React Router v5

1. 安装 React Router v5

npm install react-router-dom@5

2. 处理 404 错误页面的实现

在 React Router v5 中,通常使用 Switch 组件结合一个没有 path 属性的 Route 来实现 404 错误页面。Switch 会渲染第一个匹配的 Route,如果没有匹配的 Route,则会渲染没有 path 属性的 Route

import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';

// 首页组件
const Home = () => <h1>Home Page</h1>;
// 关于页面组件
const About = () => <h1>About Page</h1>;
// 404 错误页面组件
const NotFound = () => <h1>404 - Page Not Found</h1>;

const App = () => {
    return (
        <Router>
            <Switch>
                <Route exact path="/" component={Home} />
                <Route path="/about" component={About} />
                {/* 没有 path 属性的 Route 作为 404 页面 */}
                <Route component={NotFound} />
            </Switch>
        </Router>
    );
};

export default App;

在上述代码中,当用户访问的路径不匹配 //about 时,就会渲染 NotFound 组件,显示 404 错误信息。

React Router v6

1. 安装 React Router v6

npm install react-router-dom

2. 处理 404 错误页面的实现

在 React Router v6 中,Switch 组件被 Routes 组件取代,并且可以使用 path="*" 来匹配所有未定义的路径,从而实现 404 错误页面。

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';

// 首页组件
const Home = () => <h1>Home Page</h1>;
// 关于页面组件
const About = () => <h1>About Page</h1>;
// 404 错误页面组件
const NotFound = () => <h1>404 - Page Not Found</h1>;

const App = () => {
    return (
        <Router>
            <Routes>
                <Route path="/" element={<Home />} />
                <Route path="/about" element={<About />} />
                {/* 使用 path="*" 匹配所有未定义的路径 */}
                <Route path="*" element={<NotFound />} />
            </Routes>
        </Router>
    );
};

export default App;

在这个示例中,当用户访问的路径不匹配 //about 时,path="*"Route 会被匹配,从而渲染 NotFound 组件,显示 404 错误信息。

通过以上方法,你可以在 React Router 中有效地处理 404 错误页面,提升用户体验。

相关文章
|
7月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
373 2
|
前端开发 JavaScript
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
481 58
|
前端开发
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
419 57
|
前端开发
如何在React Router中进行嵌套路由配置?
如何在React Router中进行嵌套路由配置?
654 57
|
前端开发
如何在React Router中进行路由重定向?
如何在React Router中进行路由重定向?
763 57
|
6月前
|
缓存 前端开发 JavaScript
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
🌟蒋星熠Jaxonic,前端探索者。专注React Hooks深度实践,从原理到实战,分享状态管理、性能优化与自定义Hook精髓。助力开发者掌握函数组件的无限可能,共赴技术星辰大海!
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
|
11月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
392 68
|
11月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
345 67
|
11月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
435 62
|
移动开发 前端开发 API
React 音频播放器组件 Audio Player
本文介绍如何使用React创建音频播放器组件,涵盖核心功能如播放/暂停、进度条、音量控制和时间显示。通过HTML5 `&lt;audio&gt;` 元素和React的声明式状态管理,实现交互式音频播放。常见问题包括控件不响应、进度条无法更新和音量控制失灵,并提供解决方案。此外,还讨论了浏览器兼容性、异步错误处理和性能优化等易错点及避免方法。
946 123