解决vue cli 项目$router.go(-1)返回刷新问题

前言


相信每个人在项目中都会遇到这样的需求,就是跳到详情在返回来还希望保持原来的搜索结果,就是不希望刷新,这个时候呢keep-alive就起到了很大的作用

接下来就说说如何使用keep-alive来动态缓存页面的。

一: 直接在<router-view></router-view>外边加一层keep-alive就是全部缓存,返回都不刷新

App.vue

<template>
  <div id="app">
      <keep-alive>
        <router-view></router-view>
        </keep-alive>
  </div>
</template>

二:配合路由使用,动态去缓存你所需要缓存的,而不是全部缓存。

需要在router.js里边配置

const router = new Router({
    // mode: 'history',
    routes: [{
            path: '/', // 这个斜杠就是默认跳转的页面
            name: 'index',
            component: resolve => require(['@/components/index'], resolve),
            meta: {
                requiresAuth: true,
                keepAlive: false,
            }
        },
        {
            path: '/index',
            name: 'index',
            component: resolve => require(['@/components/index'], resolve),
            meta: {
                requiresAuth: true,   //设置此项则表示必须登录才能进入
                keepAlive: false,     //若为false则初始不缓存,若为true则表示缓存
            }
        },
        {
            path: '/index2',
            name: 'index2',
            component: resolve => require(['@/components/index2'], resolve),
            meta: {
                requiresAuth: true
            }
        }]
}

然后在路由导航守卫去做权限处理

我是写在route/index.js中,这个看你不要求
//  判断是否需要登录权限 以及是否登录
router.beforeEach((to, from, next) => {
    if (to.path == '/orderDs' || to.path == '/interveneDs' || to.path == '/afterSaleDs' || to.path == '/checkDs' || to.path == '/auditDs' || to.path == '/addVertising' || to.path == '/buyerDs' || to.path == '/gsQueryDs') {
        from.meta.keepAlive = true;   // from.meta  表示缓存列表页
        next();
    }else{
      from.meta.keepAlive = false;
      next();
    }
})

export default router

接下来看看在app.vue中的处理

<template>
  <div id="app">
需要缓存的
      <keep-alive>
        <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
不需要缓存的
      <router-view v-if="!$route.meta.keepAlive"></router-view>
  </div>
</template>

结束语


到此从详情返回列表就会缓存你所需要的缓存的了,后期再加上你就自己的业务逻辑就好了,后期还会慢慢更新,慢慢学习。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,使用this.$router.go(-1)可以返回上一个页面。如果你希望在返回上一个页面的同时携带参数,可以使用eventBus或者Bus来实现。首先,在公共的bus文件(比如bus.js)中导入Vue,并创建一个实例对象。然后在当前页面中,使用Bus.$emit或eventBus.$emit来触发事件,并传递参数。在上一个页面中,监听这个事件,并在事件回调函数中获取到传递的参数。最后,使用this.$router.go(-1)返回上一个页面。这样就可以实现带参数返回上一个页面的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue-router使用go(-1)方式进行跳转时,如何传参](https://blog.csdn.net/Caroline_Yang/article/details/104684898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue this.$router.go(-1);返回时怎么带参数](https://blog.csdn.net/sky_sunshine_x/article/details/105482714)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值