大前端react umi dva antd

umi+antd-mobile开发移动端,使用KeepAlive

2021-11-19  本文已影响0人  jack钱

使用umi-plugin-keep-alive实现KeepAlive状态存储,
并且实现
进入下一个页面时缓存,后退页面时不缓存(卸载)
类似微信小程序的页面缓存机制

1、安装

$ npm install umi-plugin-keep-alive --save
//或者
$ yarn add umi-plugin-keep-alive

2、使用

import { KeepAlive, history} from 'umi'

const page = () => {
    return (
        <>这是一个页面</>
    )
}

// 不要直接在上方page组件中包裹KeepAlive,会出问题,要以下面的方式去导出
export default () => {
  return (
    <KeepAlive
      saveScrollPosition="screen" //自动保存共享屏幕容器的滚动位置
      id={history.location.search || history.location.pathname}  // 根据参数去缓存,如果参数不同就缓存多份,如果参数相同就使用同一个缓存。这样解决了传参改变时,页面不刷新的问题
      when={() => {  // 根据路由的前进和后退状态去判断页面是否需要缓存,前进时缓存,后退时不缓存(卸载)。 when中的代码是在页面离开(卸载)时触发的。
        return history.action != 'POP';   //true卸载时缓存,false卸载时不缓存
      }}
    >
      {/* 页面组件 */}
      <page></page> 
    </KeepAlive>
  )
};

更详细的可参考 React Activation

上一篇 下一篇

猜你喜欢

热点阅读