如何在 Umi 中使用 Keep Alive

简介: 如何在 Umi 中使用 Keep Alive

image.png

移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个位置,用户看到了感兴趣的项目,点击查看其详情,进入详情页,从详情页退回列表页时,需要停留在离开列表页时的浏览位置上


类似的数据或场景还有已填写但未提交的表单管理系统中可切换和可关闭的功能标签等,这类数据随着用户交互逐渐变化或增长,这里理解为状态,在交互过程中,因为某些原因需要临时离开交互场景,则需要对状态进行保存

(from:https://github.com/CJY0208)


如何在 Umi 中使用 Keep Alive

Umi 项目中安装 umi-plugin-cache-route 插件

yarn add umi-plugin-cache-route

在配置中使用

export default {
plugins: [
    ['umi-plugin-cache-route', {
keepalive:['route path','route path']
    }],
  ],
}

执行初始化命令

umi keepalive

如果是配置式路由,可以直接在路由配置的时候,写明 keepAlive: true

export default {
plugins: [
    ['umi-plugin-cache-route'],
  ],
routes: [
    {
path: '/',
component: '../layouts/index',
routes: [
        {
path: '/list',
component: './list',
keepAlive: true,
        },
        {
path: '/item',
component: './item',
        },
      ],
    },
  ]
};

如果是约定式路由,可以直接配置keepalive属性

export default {
plugins: [
    ['umi-plugin-cache-route', {
keepalive:['/list']
    }],
  ],
}

被标记 keepAlive: true 和被配置 keepalive:['/list'] 的路由都会被一直保持,你可以在你觉得不需要的时候,使用 dropByCacheKey 手动解除。

import { dropByCacheKey } from 'umi';
export default () => {
const clearCache = () => {
    dropByCacheKey('/list');
  };
return (
<Card>
      <Button onClick={clearCache}>clear list page cache</Button>
    </Card>
  );
};

实现效果如下:从列表页到详情页,列表页被保存,通过在详情页手动解除。

1.gif

为了满足我们内部几个项目的紧急需求,通过覆盖 Umi 文件的形式实现的,不是最终最优解,但可用于生产环境

实现方案使用的是 CJY0208react-router-cache-route

目录
相关文章
|
11月前
|
缓存
Vue3-keep-alive组件
Vue3-keep-alive组件
61 0
|
2月前
|
缓存 JavaScript UED
vue 中的 keep-alive
vue 中的 keep-alive
|
3月前
|
缓存 算法 JavaScript
vue中组件保活<keep-alive>的使用
vue中组件保活<keep-alive>的使用
|
3月前
|
缓存 JavaScript
vue 中 keep-alive 组件的作用
vue 中 keep-alive 组件的作用
25 1
|
3月前
|
缓存 前端开发 JavaScript
React和Next.js开发常见的HTTP请求方法
React和Next.js开发常见的HTTP请求方法
45 0
|
3月前
|
缓存 JavaScript
Vue中keep-alive的作用是什么?
Vue中keep-alive的作用是什么?
89 4
|
3月前
|
缓存 JavaScript
vue中对keep-alive的理解
vue中对keep-alive的理解
|
10月前
67Vue - 动态组件(keep-alive)
67Vue - 动态组件(keep-alive)
26 0
|
10月前
|
存储 缓存 JavaScript
【Vue2.0源码学习】内置组件篇-keep-alive
【Vue2.0源码学习】内置组件篇-keep-alive
40 0
|
缓存 JavaScript
对Vue中keep-alive的理解
对Vue中keep-alive的理解
48 0