如何在 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

目录
相关文章
|
缓存
Vue3-keep-alive组件
Vue3-keep-alive组件
76 0
|
25天前
|
缓存 JavaScript UED
Vue 的动态组件与 keep-alive
【10月更文挑战第19天】总的来说,动态组件和 `keep-alive` 是 Vue.js 中非常实用的特性,它们为我们提供了更灵活和高效的组件管理方式,使我们能够更好地构建复杂的应用界面。深入理解和掌握它们,以便在实际开发中能够充分发挥它们的优势,提升我们的开发效率和应用性能。
44 18
|
1月前
|
缓存 JavaScript UED
vue的动态组件 keep-alive
【10月更文挑战第6天】
41 3
|
2月前
|
缓存 JavaScript 前端开发
vue中使用keep-alive的问题
vue中使用keep-alive的问题
90 2
|
5月前
|
缓存 JavaScript UED
vue 中的 keep-alive
vue 中的 keep-alive
|
6月前
|
缓存 算法 JavaScript
vue中组件保活<keep-alive>的使用
vue中组件保活<keep-alive>的使用
280 1
|
6月前
|
缓存 JavaScript
vue 中 keep-alive 组件的作用
vue 中 keep-alive 组件的作用
44 1
|
6月前
|
缓存 JavaScript
Vue中keep-alive的作用是什么?
Vue中keep-alive的作用是什么?
102 4
|
6月前
|
缓存 JavaScript
vue中对keep-alive的理解
vue中对keep-alive的理解
67Vue - 动态组件(keep-alive)
67Vue - 动态组件(keep-alive)
34 0