李成笔记网

专注域名、站长SEO知识分享与实战技巧

React 中处理 404 page not found

使用通配符占位符来处理在 React 路由中找不到的 404 页面,例如 <Route path="*" element={<PageNotFound />} /> 。 带有星号 * 的路由用作一条全能路由。 它仅在没有其他路由匹配时匹配。

import React from 'react';
import {Route, Link, Routes} from 'react-router-dom';

export default function App() {
  return (
    <div>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              {/* ? 链接以捕获所有路由 */}
              <Link to="/does-not-exist">Catch all route</Link>
            </li>
          </ul>
        </nav>

        <Routes>
          <Route path="/about" element={<About />} />
          <Route path="/" element={<Home />} />

          {/* ? 仅在没有其他路由匹配时才匹配 */}
          <Route path="*" element={<PageNotFound />} />
        </Routes>
      </div>
    </div>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

function PageNotFound() {
  return (
    <div>
      <h2>404 Page not found</h2>
    </div>
  );
}

我们使用了不匹配的路由。

{/* ? 仅在没有其他路由匹配时才匹配 */}
<Route path="*" element={<PageNotFound />} />

* 通配符语法只能用在路径的末尾。

路径等于 * 的路由是一条可以匹配任何请求的路由。 它仅在没有其他路由匹配时匹配。

如果用户导航到 //about ,他们将获得我们为这些路由设置的组件,但是,如果他们导航到任何其他页面,他们将获得 PageNotFound 组件。

处理 React 路由中未找到的 404 页面的另一种方法是,当用户尝试转到不存在的页面时,将用户重定向到不同的页面。

import React from 'react';
import {Route, Link, Routes, Navigate} from 'react-router-dom';

export default function App() {
  return (
    <div>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              {/* ? 链接以捕获所有路由 */}
              <Link to="/does-not-exist">Catch all route</Link>
            </li>
          </ul>
        </nav>

        <Routes>
          <Route path="/about" element={<About />} />
          <Route path="/" element={<Home />} />

          {/* ? 仅在没有其他路由匹配时才匹配 */}
          <Route path="*" element={<Navigate to="/" />} />
        </Routes>
      </div>
    </div>
  );
}

function Home() {
  return <h2>Home</h2>;
}

function About() {
  return <h2>About</h2>;
}

在示例中,如果他们匹配不存在的路由,我们没有渲染 PageNotFound 组件,而是将用户重定向到 /

<Route path="*" element={<Navigate to="/" />} />

每次他们转到没有任何匹配项的路由时我们使用 Navigate 元素将用户重定向到 /

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言