react umi 页面缓存

1.安装

yarn add umi-plugin-keep-alive

2.Layout中写逻辑

在这里插入图片描述

import Menu from './components/menu/index';
import { history, useDispatch, KeepAlive } from 'umi';

const Layouts = (props) => {
  const keepAliveRoutes =JSON.parse(localStorage.getItem('newMenuList')) || '[]';
   //因为此项目是所有页面保存,所以遍历生成的数组,格式如下
  // const keepAliveRoutes = ['/reserveSys/lawManage', '/reserveSys/psychologyManage'];
  const isLogin = localStorage.getItem('token');

  if (!isLogin) {
    history.push('/login');
  }

  if (!isLogin) {
    return <div>{props.children}</div>;
  } else {
    return keepAliveRoutes.includes(props?.location?.pathname || '') ? (
      <KeepAlive
        name={history.location.search || history.location.pathname}
        id={history.location.search || history.location.pathname} //同一模块下,多个页面属于多缓存,必须加id,不然缓存会失效
        when={() => {
          // 根据路由的前进和后退状态去判断页面是否需要缓存,前进时缓存,后退时不缓存(卸载)。 when中的代码是在页面离开(卸载)时触发的。
          return history.action != 'POP'; // true卸载时缓存,false卸载时不缓存
        }}
      >
        <Menu {...props} />
      </KeepAlive>
    ) : (
      <Menu {...props} />
    );
  }
};
export default Layouts;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值