简体   繁体   English

React router v6 在路由上遇到空白页

[英]React router v6 experiencing blank page on routes

Updated from "react-router-dom": "^5.1.2" to "react-router-dom": "^6.3.0""react-router-dom": "^5.1.2"更新为"react-router-dom": "^6.3.0"
The app has a few Context.Providers just outside BrowserRouter , a 404 route, and a few implicit nested routes for a few pages (denoted by path not exact path )该应用程序在BrowserRouter之外有一些Context.Providers 、一个 404 路由和一些用于几个页面的隐式嵌套路由(由path not exact path表示)

code:代码:

index.js index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App';
import { BrowserRouter, Routes, Route } from "react-router-dom";

ReactDOM.render(
        <App/>,
    document.getElementById('root')
    );

./components/App.js ./components/App.js

import React, { useState } from "react";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import TierA from "./TierA"
import TierB from "./TierB"
import Catalogue from "./Catalogue"
import Admin from "./Admin"
import NotFound from "./NotFound" // this is the 404 page component

import PlayerContext from "./Player/context"
import SearchContext from "./Search/context"
import { useSearch } from "../hooks/useSearch"


const App = () => {

    const searchText = useSearch()
    const [playerItem, setPlayerItem] = useState(null)

    return (
        <React.Fragment>
        <SearchContext.Provider value={searchText}>
        <PlayerContext.Provider value={{ playerItem, setPlayerItem }}>
        <BrowserRouter basename={process.env.PUBLIC_URL}>
                <Routes>
                    <Route element={TierA} exact path="/a_tier" />
                    <Route element={TierB} exact path="/b_tier" />
                    <Route element={Catalogue} path="/catalogue" />
                    <Route element={Admin} path="/admin" />
                    <Route element={NotFound} path="*" /> 
                </Routes>
            </BrowserRouter>
        </PlayerContext.Provider>
        </SearchContext.Provider>
        </React.Fragment>
    )
}


export default App;

Before updating to react-router-dom v6, the old version used to render the 404 page when hitting the base / route and the named routes rendered correctly.在更新到 react-router-dom v6 之前,旧版本用于在命中基本/路由时呈现 404 页面,并且命名路由正确呈现。
Now, hitting any of the routes above shows a blank page, no warnings or errors stand out in console Please advise, thanks in advance现在,点击上面的任何路线都会显示一个空白页面,控制台中没有突出的警告或错误请告知,提前谢谢

runs with npm start使用 npm start 运行

"scripts": {
    "start": "react-scripts start",
...

In react-router-dom@6 the Route component API/syntax changed significantly.react-router-dom@6中, Route组件 API/语法发生了显着变化。 The element prop takes a ReactNode , aka JSX. element属性需要一个ReactNode ,也就是 JSX。 Pass the React components as JSX.将 React 组件作为 JSX 传递。

Example:例子:

<BrowserRouter basename={process.env.PUBLIC_URL}>
  <Routes>
    <Route element={<TierA />} path="/a_tier" />
    <Route element={<TierB />} path="/b_tier" />
    <Route element={<Catalogue />} path="/catalogue" />
    <Route element={<Admin />} path="/admin" />
    <Route element={<NotFound />} path="*" /> 
  </Routes>
</BrowserRouter>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM