React中使用路由组件中页面显示空白

目录

前言

问题场景以及代码

index.html

index.js:

App.js

 解决办法

结语


前言

        我最近在跟着Udemy上的课程来学React,期间用到了Route和Routes,但是碰到了一些问题。废话不多说,直接上主要的代码


问题场景以及代码

        下面是我原始的代码,绝大部分都是没问题的(99%),但是有一个地方弄错了,不是我学知识的粗心大意,而是不可避免的版本更新而产生的问题!!

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <title>React App</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

index.js:

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import { BrowserRouter } from "react-router-dom";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
    <BrowserRouter>
      <App />
    </BrowserRouter>
  
);

App.js

import "./App.css";
import { Route,Routes } from "react-router-dom";
import AllMeetUpsPage from "./pages/AllMeetUps";
import NewMeetUpsPage from "./pages/NewMeetUps";
import FavouritesPage from "./pages/Favourites";
import Nav from "./components/layout/Nav";

function App() {
  return (
    <div>
      <h1>HEllo React</h1>
      <Nav />
      <Routes>
        <Route path="/" exact>
          <AllMeetUpsPage />
        </Route>
        {/* exact 意味着完全匹配才switch渲染这个页面 */}
        <Route path="/Favourites">
          <FavouritesPage />
        </Route>
        <Route path="/new">
          <NewMeetUpsPage />
        </Route>
      </Routes>
    </div>
  );
}

export default App;
import { Link } from "react-router-dom";

function Nav(){
    return(
        <header>
            <div>Meetups</div>
            <nav>
                <ul>
                    <li>
                        <Link to='/'>All Meetups</Link>
                    </li>
                    <li>
                        <Link to='/Favourites'>My Favourites</Link>
                    </li>
                    <li>
                        <Link to='/new'>New Meetups</Link>
                    </li>
                </ul>
            </nav>
        </header>
    )
}
export default Nav

目录大致长这样:

代码写完保存后终端也没有报错,一切显示正常

 

但是打开的页面却是一片空白

再按了F12后才知道原来是有报错的


 解决办法

        在比较高级版本的react-router-dom中会报这样的错误,你只需要修改成下图

将你的组件作为element传递进去

import "./App.css";
import { Route, Routes } from "react-router-dom";
import AllMeetUpsPage from "./pages/AllMeetUps";
import NewMeetUpsPage from "./pages/NewMeetUps";
import FavouritesPage from "./pages/Favourites";
import Nav from "./components/layout/Nav";

function App() {
  return (
    <div>
      <h1>HEllo React</h1>
      <Nav />
      <Routes>
        {/* exact 意味着完全匹配才switch渲染这个页面 */}
        <Route path="/" exact element={<AllMeetUpsPage />}></Route>
        <Route path="/Favourites" element={<FavouritesPage />}></Route>
        <Route path="/new" element={<NewMeetUpsPage />}></Route>
      </Routes>
    </div>
  );
}

export default App;

 然后就能正常显示了


结语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hiddenSharp429

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值