【问题标题】:Adding a 404 page (component) in react在反应中添加404页面(组件)
【发布时间】:2022-01-05 12:55:17
【问题描述】:

我是 React 新手(熟悉 Angular),并且正在使用 VisualStudio2022 中的脚手架 React 项目。 我正在尝试添加 404 组件,但无论我尝试什么,我的 404 页面总是会附加到实际页面。

import React, { Component } from 'react';
import { Route } from 'react-router';
import { Layout } from './components/Layout';
import { Home } from './components/Home';
import { FetchData } from './components/FetchData';
import { Counter } from './components/Counter';
import { NotFound } from './components/NotFound';

import './custom.css'

export default class App extends Component {
    static displayName = App.name;

    render() {
        return (
            <Layout>
                <Route exact path='/' component={Home} />
                <Route path='/counter' component={Counter} />
                <Route path='/fetch-data' component={FetchData} />
                <Route component={NotFound} />
            </Layout>
        );
    }
}

是否可以让我的NotFound 组件仅在没有其他路由匹配时出现?

【问题讨论】:

    标签: react-router


    【解决方案1】:

    对于 404 页面,您应该指定 path=*

    反应路由器 v6:

        <Route
          path="*"
          element={<NotFound/>}
        />
    

    Source react-router v.6

    反应路由器 v5:

      <Route path="*">
        <NotFound/>
      </Route>
    

    Source react-router v.5

    您似乎使用 react-router v5,这意味着您应该使用 &lt;Switch&gt; 组件包装您的路由。

    【讨论】:

    • 我如何知道我使用的是 v5 还是 v6?我应该使用哪一个?
    • 为什么我工作过的例子都没有提到Switch?是最近添加的吗?
    • 1) 您可以在 package.json - react-router-dom 中查看 react-router 的版本。使用哪一个?我会使用 v6,因为它是具有非常方便的嵌套路由系统的最新版本。但是,如果您出于某种原因必须坚持对组件进行分类和/或对 16.8 或更早版本做出反应,则可能不是您的选择。 2) 如果您使用 react-router v5,则使用 Switch,使用 v6,您使用 Route 而不是 Switch。由于您使用 component={} 并且它适用于您 - 您使用 react-router v5 并且您必须使用 Switch
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2021-04-21
    • 2020-08-12
    • 1970-01-01
    • 2022-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多