«

react-router 路由跳转报错的解决

yang 发布于 阅读:394 react阶段


问题出现

react-router 路由跳转报错的解决

解决:

使用 Suspense解决路由跳转报错

引包

import { HashRouter, Route, Routes } from "react-router-dom";
import React, { lazy, Suspense } from "react";
import { DotLoading } from "antd-mobile";
    // HashRouter为路由器,所有的路由必须放置在路由器中
    <HashRouter>
      {/* Suspense是解决路由跳转报错的方案(路由已经跳转,但是由于网络问题页面还未加载出来就会报错) */}
      <Suspense
        fallback={
          //没有加载出来就先显示加载状态
          <div>
            <span style={{ fontSize: 24 }}>
              <DotLoading color="#ff2f66" />
            </span>
          </div>
        }
      >
        {/* Routes:线路匹配容器,所有组件切换都应该放置在Routes中 */}
        <Routes>
          {/* Route:匹配具体的组件 */}
          {/* exact是默认时的精准匹配,默认是包含匹配,只要hash包含了此path就会被拦截 */}
          {/* 登录页面 */}
          <Route path="/" exact element={<Login />}></Route>
          {/* 注册 */}
          <Route path="/register" element={<Register />}></Route>
          {/* 选座 */}
          <Route path="/seat" element={<Seat />}></Route>

          {/* 布局页面 */}
          <Route path="/layout" element={<Layout />}>
            {/* 热映 */}
            <Route exact path="/layout/index" element={<Index />}></Route>
            {/* 我的*/}
            <Route path="/layout/mine" element={<Mine />}></Route>
            {/* 影院*/}
            <Route path="/layout/movie" element={<Movie />}></Route>
          </Route>

          {/* 城市 */}
          <Route path="/map" element={<Map />}></Route>

          {/* 放映厅排片信息 */}
          <Route path="/play" element={<Play />}></Route>

          {/* 404页面 */}
          <Route path="*" element={<Error />}></Route>
        </Routes>
      </Suspense>
    </HashRouter>

版权所有:微4e
文章标题:react-router 路由跳转报错的解决
除非注明,文章均为 微4e 原创,请勿用于任何商业用途,禁止转载

推荐阅读:


扫描二维码,在手机上阅读
请先 登录 再评论