若依框架-已经设置了缓存的页面,在特定情境下清除缓存【拿到路由上的参数进行判断是否清除缓存刷新】

1、情境:在若依框架中每个页面设置了缓存,但是有一个功能需要从这个页面带参数去另外一个页面进行跳转,此时发现因为缓存,这个跳转的功能失效了

2、操作:在跳转之前的那个页面加载之前加一个标记

 mounted() {
    sessionStorage.setItem('custom', 'Refresh');
 }

3、在跳转离开这个第一个页面之前设置以下的代码,这段代码写在method下面,和它同级【这里有一个大坑!!!!缓存的这个sessionStorage.setItem('custom', '');里面的custom是要写你页面路由的那个名字,不是随便起的,哎,因为这个找了好久的错误!救命】

  beforeRouteLeave(to, from, next) {
    console.log('kanyixia' + to.query.casesId);
    if (!to.query.casesId) { //判断路由的参数 如果没有就把标记清空,如果有就带上标记
      sessionStorage.setItem('custom', '');
    } else {
      sessionStorage.setItem('custom', 'Refresh');
    }
    // debugger;
    if (
      to.name === 'Custom' &&
      sessionStorage.getItem('custom') === 'Refresh'
    ) {
      try {
        var cache = this.$vnode.parent.componentInstance.cache;
        var key = '';
        for (var prop in cache) {
          if (prop.lastIndexOf('custom') > 0) {
            key = prop;
          }
        }
        if (key != '') {
          delete cache[key];
        }
      } catch (error) {}
      this.$destroy();
    }
    next();
  }

4、最后在跳转的方法体中把这个标记清除

  // 跳转至第二个页面
    goCases(row) {
      let casesId = row.id;
      this.$router.push({
        path: '/cases/custom',
        // name: 'Custom',
        query: { casesId: casesId }
        // params: { noCache: true }
      });
      sessionStorage.setItem('custom', '');//这里进行清除标记
    }

转载自:若依 this.$router.push 同地址不同参,页面不刷新问题_ruoyi公共路由不同参数跳转页面不刷新-CSDN博客

你可能感兴趣的:(缓存,vue,前端)