本文转载于時間蒼白了誓言_49b9

使用vue单页开发项目时遇到一个问题:在列表页进入详情页,按返回键返回列表页时页面刷新了,用户体验非常差啊!!!查阅了一下相关问题,使用解决这个问题,下面是我的使用心得。

是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

1.在app.vue页面中把替换成下图所示:

<keep-alive>
<router-view v-if="$route.meta.keepLive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepLive"></router-view>

2.在router中的index.js中,路由配置下加一个meta属性:

{
path: '/',
component: () => import(/* webpackChunkName: 'day-report' */ './views/index.vue'),
meta: {
keepLive: !0
}
},

我的需求是,列表页面到列表详情页跳转后,从详情页回来之后,列表页面不刷新

注意:哪个页面需要缓存,哪个页面加上就行,不需要的不用写

3.在列表详情页,加入下图所示内容:

注意:下面内容加上之后,想要的效果是实现了,但是出现另一个问题,就是无论哪个页面跳到这个列表页面,都不会刷新,显然和所要求的不同。所以需要第四步:

beforeRouteLeave(to, from, next) {
if (to.path === '/') {
if (!from.meta.keepLive) {
from.meta.keepLive = !0;
}
} else {
from.meta.keepLive = !1;
to.meta.keepLive = !1;
this.$destroy();
}
next();
},

4.在列表页加入如下图所示:

需要判断下,如果页面来源是详情页的话,就缓存,

否则,就不缓存,刷新。

beforeRouteLeave(to, from, next) {
if (to.path === '/day') {
from.meta.keepLive = !0;
} else {
from.meta.keepLive = !1;
this.$destroy();
}
next();
},

beforeRouterLeave必须写在有配置路由的页面上才有效的。具体使用方法,可以参考官方文档。

vue中keepAlive的用法[返回页面不刷新]的更多相关文章

  1. vue中keep-alive的用法

    1.keep-alive的作用以及好处 在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-al ...

  2. vue的组件缓存(返回页面不刷新)

    每次使用返回是页面总是会刷新 导致了一些体验上的不愉快 现在 发现vue中的一个很方便的方法还可以用来优化性能就是: keep-alive缓存组件 <router-view v-if=" ...

  3. Vue中directives的用法

    关于 vue 中 directives 的用法问题,详细可以参考vue官方对directives的解释 当前文章主要讲述directives怎么用,directives做权限按钮的功能 ###1. d ...

  4. Vue中keep-alive的使用

    Vue中keep-alive的使用我总结的有两种方式应用: 首先简述一下keep-alive的作用,kee-alive可以缓存不活动的的组件.当组件之间进行相互切换的时候,默认会销毁,当重新切换回来时 ...

  5. Vue中keep-alive组件的理解

    对keep-alive组件的理解 当在组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例, ...

  6. vue中数据接收成功,页面渲染失败

    1.vue中数据接收成功,页面渲染失败.代码如下 经过查找资料修改代码为 或是 原因是: 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:  ...

  7. vue中keepalive怎么理解?​---vue中文社区

    vue中keepalive怎么理解? 说在前面: keep-alive是vue源码中实现的一个组件, 感兴趣的可以研究源码 https://github.com/vuejs/vue/blob/dev/ ...

  8. vue中 keep-alive 组件的作用

    原文地址 在vue项目中,难免会有列表页面或者搜索结果列表页面,点击某个结果之后,返回回来时,如果不对结果页面进行缓存,那么返回列表页面的时候会回到初始状态,但是我们想要的结果是返回时这个页面还是之前 ...

  9. vue中keepAlive的使用

    在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态:vue里提供了keep-alive组件用来缓存状态.可以用以下几种方案 ...

随机推荐

  1. vue中的插槽(slot)

    vue中的插槽,指的是子组件中提供给父组件使用的一个占位符,用<slot></slot>标签表示,父组件可以在这个占位符中填充任何模板代码,比如HTML.组件等,填充的内容会替 ...

  2. js中~~和^=分别代表什么,用处是什么?

    先看个栗子: ~~false === 0 ~~true === 1 ~~undefined === 0 ~~!undefined === 1 ~~null === 0 ~~!null === 1 ~~ ...

  3. [每日一题系列] LeetCode 1013. 将数组分成和相等的三个部分

    题目: 给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false. 形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + . ...

  4. eetcode必要技巧--动态规划(一)

    首先我们要搞清楚什么是动态规划 动态规划是运筹学中用于求解决策过程中的最优化数学方法.当然,我们在这里关注的是作为一种算法设计技术,作为一种使用多阶段决策过程最优的通用方法. 当然这个很难理解,但是按 ...

  5. 【字节校招】【实习】【内推】字节跳动春招(校招或实习均可)以及日常实习内推ing

    本人是年前刚刚入职抖音的应届生,职业认证还未来的级更改,但是这些都不重要.重要的是我们不能错过优秀的你~ 字节跳动的相关福利我就不介绍了,技术实习生是400/天,房补是1500/月,三餐免费,下午茶, ...

  6. Numpy之数据保存与读取

      在pandas使用的25个技巧中介绍了几个常用的Pandas的使用技巧,不少技巧在机器学习和深度学习方面很有用处.本文将会介绍Numpy在数据保存和读取方面的内容,这些在机器学习和深度学习方向也大 ...

  7. The Game Of Life – 数据结构与算法的敲门砖

    The Game Of Life(生命游戏,又称为细胞自动机)几乎是所有数据结构与算法导论教程前言的一个很经典的程序了.这是一个零玩家游戏,发生在一个平面网格里.每个格子的细胞都有死亡和存活两种状态, ...

  8. emgucv 提示缺少emgucv.word

    遇到这种问题真的挺恶心的 ,因为条件不同触发这种错误条件也不一样,但是主要原因就是一个那就是你的程序找不到dll了(废话...) 1.首先检查Redistributable 与runtime(在开发环 ...

  9. Arch Linux安装配置-双系统(1)

    Arch Linux启动盘准备: 在Windows下安装Win32 Disk Imager,打开页面,点击Download即可! 安装配置 1.选择我同意 2.选择安装位置路径 3.打勾,在桌面显示图 ...

  10. 保姆级教程!手把手教你使用Longhorn管理云原生分布式SQL数据库!

    作者简介 Jimmy Guerrero,在开发者关系团队和开源社区拥有20多年的经验.他目前领导YugabyteDB的社区和市场团队. 本文来自Rancher Labs Longhorn是Kubern ...