场景:在vue后台管理端项目,需要实现从列表页面跳到详情页面,再从详情页面返回到列表时,列表页面保持跳转之前的状态。

方案一:keep-alive

实践证明,效果是实现了,但是带来了其他问题,会将其他页面的状态都缓存住,而我们只是想要缓存一级列表页面的。所以这方案 pass。

方案二:mixins和vuex

想法是写一个全局的方法,通过 mixins 混入,在需要的页面引进来,这样的话,就可以灵活实现该场景。当然,这里会把列表页面状态存到 vuex 里,在mixins中去调用缓存的状态。
具体实现:

// query.js
export default{watch: {// 深度监听对象里的每个值的变化'searchParam': {  // 列表页面需要缓存的对象handler() {// 缓存搜索条件及当前路由的namethis.$store.commit('CACHE_QUERY', this.searchParam)// 缓存当前页面路由名称this.$store.commit('CACHE_ROUTE_NAME', this.$route.name)},deep: true}},created() {this.tableParam.total = null},mounted() {this.parseQuery()},methods: {parseQuery() {// 存一份初始值,当路由名称不一样时,刷新页面if (this.$store.state.app.currentRouteName !== this.$route.name) {// this.searchParam = Object.assign({}, resetData)this.$store.commit('CACHE_TAB_INDEX', 'my')} else {// 将缓存在 vuex 中的搜索条件,和当前的搜索条件合在一起let query = Object.assign({}, this.$store.state.app.searchQuery)this.searchParam = {...this.searchParam, ...query}}// 如果使用了 el-tabs,那在这里先获取存在 vuex 里的 activeName 值,并改变选中项this.$parent.$parent.$parent.activeName = this.$parent.$parent.$parent.activeName && this.$store.state.app.currentTabIndex}}
}

需要注意的是这里的 searchParam 在每个列表页面都有,也就是说每个列表页面需要设置一个对应的 searchParam,它代表每个页面的搜索条件。
再在需要使用的列表页面去使用:

import queryList from '@/commons/mixins/query'export default {mixins: [queryList]
}

这样的话就达到了我们需要的效果,从二级返回到一级页面,一级页面保持跳转之前的状态。
如果页面有重置按钮,那么在重置的方法里也要加上 this.tableParam.total = null

公众号:Coder 杂谈,欢迎关注

在vue中二级页面返回一级页面相关推荐

  1. vue中处理后台返回的 html 特殊标签(‘\lt; p style=“xxx“ \gt;‘)或(\<p>)的三种情况及传给后端数据的解决方案

    问题一:vue中处理后台返回的 html 特殊标签('&lt: p style="xxx" &gt:')或(\<p>)的三种情况 返回数据 // 返回数 ...

  2. javascript 跳转页面 关闭当前页面 返回上页面

    //跳转页面 1.window.location.href     //跳转到的页面 2.如何有form  表单的话 document.form[0].action  =  //跳转的action  ...

  3. vue中的倒计时跳转页面问题和axios网络请求this作用域问题

    一.前言 这两个是在日常开发中碰到的问题,网上都能查得到答案,但是我怕自己会忘记,姑且记录一下用作笔记吧. 二.vue倒计时跳转问题 1.案例 比如我们在一次网络请求结束之后,如果返回结果是成功,则倒 ...

  4. ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存

    keep-alive 有时候我们不希望组件被重新渲染影响使用体验:或者处于性能考虑,避免多次重复渲染降低性能.而是希望组件可以缓存下来,维持当前的状态.这时候就可以用到keep-alive组件. 官网 ...

  5. react navigation中使用goBack返回指定页面

    goBack 首先, 现在看一下react navigation官网中对goBack的描述: goBack的参数为页面的key, 这个key是系统随机分配的, 而不是手动设置的routeName, 所 ...

  6. (uniapp跳转回显),A页面进入B页面,B页面返回A页面,并传值给A页面(技巧绝对好用慢慢看)

    !这种方法首先要理解uniapp里面的getCurrentPages()函数,自己可以打印一下就知道了 var pages = getCurrentPages();//获取所有页面的数组对象 var ...

  7. 时间戳处理:vue中请求接口 返回的数据 将时间戳转换成时间 并渲染到页面

    问题: 今天遇到一个问题是,请求接口,返回了很多的时间戳数据.将时间戳转换成时间.并渲染到页面上.之前有篇文章讲的是单个时间戳的转换.这次是多个数据.我有点不知所措了. 分析: 经过思考,我们可以这样 ...

  8. vue从其它页面返回_vue页面按返回键等跳转重定向判断

    情景:用户购物车-结算页-支付后跳转到跳转到订单列表,当按返回时重定向到首页 1.使用this.$router.replace() 2. mounted() { // 挂载完成后,判断浏览器是否支持p ...

  9. vue中使用Vue-i18n插件实现页面中英文切换详细教程

    1.在项目的根目录中安装插件 npm install vue-i18n 2.新建文件夹与文件存放自己配置的语言包,我这里新建的是lang文件夹 zh.js为中文语言包 en.js为英文语言包 文件夹与 ...

最新文章

  1. 十进制字符串转十六进制字符串
  2. WebDAV服务漏洞利用工具DAVTest
  3. 除非Window Activation Service(WAS)和万维网发布服务(W3SVC)均处于运行状态,否则无法启动网站。IIS 7
  4. vue 2.6 插槽v-slot用法记录
  5. 关于ubuntu终端命令路径太长的问题
  6. 【图文】如何在centos上安装tomcat
  7. 服务启动失败_将控制台程序转换为服务运行
  8. Linux下动态共享库加载及使用详解
  9. 2014.10.18笔记
  10. python爬虫视频课程推荐_Python 爬虫实战案例(推荐小白研究)
  11. Linux RedHat 7 配置本地 YUM源
  12. Redfish Data model (红鱼的资料模型)
  13. 从jensen不等式到相对熵的非负性性
  14. 私钥、证书、USBKey
  15. storm和vgj vgj_风暴很忙:VGJ.Storm新阵容亮相DAC预选赛
  16. 将m个相同的球全部放到n个相同的盒子里面有几种放法
  17. 图片怎样加贴纸?这些方法值得一试
  18. 【OneAPM】极客编程挑战#025:发挥想象生成漂亮炫酷的SVG动画效果
  19. matlab抗混叠滤波器,试验四音频抗混叠滤波器设计.doc
  20. 不得不会的软件测试bug分析定位技巧

热门文章

  1. 如何打开探月工程数据发布与信息服务系统下载的数据
  2. 论文阅读笔记--Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
  3. websocketpp wss
  4. Hadoop fs 常用命令
  5. 用python祝福父亲节_2020年父亲节给爸爸的微信祝福语27条
  6. 使用Vue表单时输入框无法输入文字
  7. ORB - (Oriented Fast and Rotated BRIEF)算法
  8. 鸟人的Android揭秘(9)——Init进程运行过程
  9. 毕业四个月,一个初出校门的程序员的生活现状
  10. 「GXOI / GZOI2019」逼死强迫症——斐波那契+矩阵快速幂