React18实现keepalive效果 react-router-dom@6 outlet 路由缓存 页面缓存


前言:React18实现keepalive效果 react-router-dom@6 outlet 路由页面缓存
注意是实现路由页面的缓存,其他的看官方文档自己摸索,原理都是一样的

1、版本环境

"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.4.2"

按道理版本低一点也没有什么关系。

2、react-activation

这是一个npm包,在react keep alive中用的人数应该是最多的包.
这是GitHub地址react-activation

2.1安装

yarn add react-activation
# 或者
npm install react-activation

2.2.关闭严格模式

在main.tsx里把<React.StrictMode></React.StrictMode>这个标签删掉。

2.3.AliveScope使用

一般把AliveScope放在App外层,但是要在Router内层。
在这里插入图片描述

2.4.KeepAlive使用

在路由表里

import Login from "../pages/Login";
import Main from "../pages/Main";
import Query from "../pages/Main/Query";
import Index from "../pages/Main/Index/index";
//如果懒加载的话第一次点击不能渲染出组件,要缓存的路由不能懒加载!!
// const Query = lazy(() => import("../pages/Main/Query"))
import KeepAlive from 'react-activation'
const routes: RouteObject[] = [
    {
        path: '/main',
        element: <Main />,
        children: [
            {
                path: "index",
                //KeepAlive一定一定要加id!!!
                element:<KeepAlive id="index" ><Index /></KeepAlive>
            },
            {
                path: "query",
                element: <KeepAlive id="query"><Query /></KeepAlive>
            },
        ]
    },
    {
        path: '/login',
        element: <Login />
    }
]

KeepAlive标签一定一定要加id!!!
要缓存的路由不能懒加载!!!

2.5.Outlet放置

正常放就行,该放哪就放哪。我这个就是放在Main组件里,因为我的<Index />和<Query />两个子路由都是属于<Main />的。
在这里插入图片描述

3、结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cwiyc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值