element-ui框架的缓存机制

在工作中,element-ui一般适用于做后台管理系统,但是我实际用到的不是很多。
今天工作中,遇到了一个后台管理系统页面缓存的问题。

问题描述:
当前页面的情况是,当前页面从缓存中拿取数据而不是从后台接口中获取数据,这样处理的好处是页面数据加载快,省去了数据加载的过程,缺点也很明显,如果数据有更新或者改变,页面是不是发生变化的。

需求:
将此页面从缓存中去除,然后改为正常的从后台接口获取数据。

分析问题:
在这里插入图片描述
找到后台管理系统中的标题tag页,然后点击的时候进行数据的加载。

 <keep-alive :include="cachedViews">
   <router-view :key="key" />
 </keep-alive>

keep-alive就是保存缓存的标签

此处的include如果不写,则默认所有页面都进行缓存,只有通过activated方法才能触发页面的接口。createdmounted只能触发页面一次。

computed: {
  cachedViews() {
    return this.$store.state.tagsView.cachedViews;
  }
}

找到store中的cachedViews;

  ADD_CACHED_VIEW: (state, view) => {
    if (state.cachedViews.includes(view.name)) return;
    // if (!view.meta.noCache) {
    state.cachedViews.push(view.name);
    // }
  }

以上代码的意思就是:如果页面路由中的name跟页面代码中的name一致的情况下,则会自动进行缓存,加载数据的时候也是会直接从缓存中加载。

也就是下面的这两个地方:
在这里插入图片描述
在这里插入图片描述

最简单粗暴的解决办法就是:将两边的name值设置成不一样的值。

具体的原理需要看一下vue的缓存机制,话说好久没有学习新知识了,很惭愧啊。。。。

人不学习是会死翘翘的,被后来者拍死在沙滩上,哈哈,开个玩笑……共勉

GitHub 加速计划 / eleme / element
15
3
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:4 个月前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐