在react react-router-domV6 中使用路由懒加载和路由动画效果而造成的问题

简介: 在react react-router-domV6 中使用路由懒加载和路由动画效果而造成的问题

技术:

react@18

react-router-dom v6 // 前端路由插件

react-transition-group // 动画插件

lazy // 路由懒加载


问题


在react中,我使用路由来完成一个路由切换的动画效果,但是因为路由懒加载的配置,导致我在第一次刷新页面时后续进行第一次跳转,会在造成,新的路由页面出来后,旧的路由页面不消失,把新的路由页面给覆盖住了。


代码如下:


router.js


import { lazy } from 'react'
import { Navigate } from 'react-router-dom'
import { AuthRoute } from '../components/AuthRoute'
// 懒加载路由需要放到普通路由最下面
import NotFound from '../pages/notFound'
import Login from '../pages/Login'
import Layout from '../pages/Layout'
import Books from '../pages/Layout/books'
import Shelf from '../pages/Layout/shelf'
// const Login = lazy(() => import('../pages/Login'))
// const Layout = lazy(() => import('../pages/Layout'))
// const Books = lazy(() => import('../pages/Layout/books'))
// const Shelf = lazy(() => import('../pages/Layout/shelf'))
const routerList = [
  { path: '/', element: <Navigate to="/home" /> },
  { path: '/login', element: <AuthRoute><Login /></AuthRoute> },
  {
    path: '/home', element: <AuthRoute><Layout></Layout></AuthRoute>, children: [
      { index: true, element: <Navigate to="books" /> },
      { path: 'books', element: <Books /> },
      { path: 'shelf', element: <Shelf /> },
    ]
  },
  { path: '*', element: <NotFound /> }
]
export default routerList


App.js


import { useLocation, useRoutes } from 'react-router-dom'
import { CSSTransition, TransitionGroup } from 'react-transition-group'
import routerList from './router'
function App() {
  let location = useLocation();
  let router = useRoutes(routerList, location);
  return (
    <div className="App">
      {/* <Suspense fallback={
        <div
          style={{
            textAlign: 'center',
            marginTop: 200
          }}
        >
          loading...
        </div>
      }> */}
      {/* 使用路由懒加载会造成,在刷新完页面后进行第一次跳转页面,旧页面不消失的问题 */}
      {/*  */}
      <TransitionGroup >
        <CSSTransition key={location.key} timeout={1000} classNames="fds">
          {router}
        </CSSTransition>
      </TransitionGroup>
      {/* </Suspense> */}
    </div>
  );
}
export default App;


目前还没找到解决方法,只能先将路由懒加载去掉了。

如果有解决办法,请在下方留言!


目录
相关文章
|
2月前
|
前端开发 JavaScript
React和Vue实现路由懒加载
React和Vue实现路由懒加载
54 2
|
2月前
|
存储 资源调度 前端开发
React原理 即 React路由基础
React原理 即 React路由基础
64 1
|
2月前
|
前端开发
如何使用react-router v6快速搭建路由?
如何使用react-router v6快速搭建路由?
84 0
|
2月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
76 0
|
18天前
|
前端开发 JavaScript API
React小记(四)_路由的基本使用
React小记(四)_路由的基本使用
16 1
|
10天前
|
网络架构
react18【系列实用教程】react-router-dom —— 路由管理 (2024最新版)
react18【系列实用教程】react-router-dom —— 路由管理 (2024最新版)
20 0
|
2月前
|
资源调度 前端开发 JavaScript
React Router:React应用的路由管理
【4月更文挑战第25天】React Router是React的官方路由库,用于管理SPA的路由。它基于组件,将URL映射到React组件,核心概念包括路由、链接和导航。设置路由时,在根组件中使用BrowserRouter或HashRouter,包裹Routes组件,定义Route规则。Link组件用于创建内部链接,实现导航。高级特性包括嵌套路由、参数化路由和编程式导航,如子路由、动态参数和JavaScript控制的导航。掌握React Router能帮助开发者更高效地构建复杂的React应用。
|
2月前
|
前端开发 中间件 数据安全/隐私保护
React路由进阶方法
React路由进阶方法
36 1
|
2月前
|
JavaScript 前端开发 网络安全
vue与react路由拦截
vue与react路由拦截
51 4
|
11月前
|
前端开发
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
前端学习笔记202305学习笔记第二十九天-React keep alive原理之2
50 0