vue实现跳转传参查询

vue实现跳转传参查询:

应用场景:外部链接携参跳转目标页时,避免多次输入查询信息查询
目标需求:登录及非登录状态均可跳转自动查询
避坑指南:token失效时需要重新缓存及路由导航缓存判断

简单实现:缓存信息,自动查询。

一,缓存跳转信息。

1,路由拦截器方法中传入name:

handleAuth(code,name, () => {}

2,handleAuth方法中 ,非登录状态缓存传参信息

//获取token,非登录状态时,非首页或默认页面时记住跳转路径及携参
//handleAuth方法中缓存跳转路径及携参:
export const handleAuth = (code,name,callback) => {
 if(!token){
        if(name!='home'&&name!='rootPath'){
          localStorage.setItem('targetPathName', name);
          let params = new URL(location.href).searchParams;
          let [id] = [params.get('id')];
          if (id != undefined) {
            localStorage.setItem('queryId', id);
          }
        }
  }
}

3.main.vue中,跳转判断。
判断非目标页时跳转首页,导航标签缓存页不存在时也跳目标页,跳转后清除缓存。

 let getPathName=localStorage.getItem('targetPathName');
    let getQueryId=localStorage.getItem('queryId');
    // 跳转页不在标签栏中时跳首页(目标页除外,目标页不在标签栏中时不跳首页)
    if (!this.tagNavList.find(item => item.name === this.$route.name)&&this.$route.name !=='target-page'&&getPathName==null) {
      this.$router.push({
        name: home
      });
    }
    //非首页,携参跳转登录目标页
    if(getPathName!=null) {
      if(getQueryId!=null&&getPathName=='target-page'){
          this.$router.push({
                  name: getPathName,
                  query: {
                    Id:getQueryId
                  }
          });
      localStorage.removeItem('queryId');
       }else{
        this.$router.push({
          name: getPathName
        });
      }
      localStorage.removeItem('targetPathName');
    }

二,token失效时缓存处理:

1,登录状态时,token失效刷新token退出登录时,缓存数据数据丢失,重新再次缓存

export const setTargetInfo = () => {
  let name=window.location.pathname.split("/").slice(-1)
  let params = new URL(location.href).searchParams;
  let [id] = [params.get('id')];
  if(name&&name[0]!=undefined){
    if(name[0]=='target-page'&&id != undefined){
        localStorage.setItem('targetPathName',name[0]);
        localStorage.setItem('queryId', id);
    }
  }
}

2.axios方法拦截中,退出登录前,缓存跳转信息

 if(error.request.status == 401&&!url.includes('api/getToken')){
          return refreshToken().then(res=> {
            //...刷新token处理  
            return instance(config)
          }).catch(err => {
            //token过期时,退出登录前再次缓存上次跳转信息  
            setTargetInfo();
            //退出登录
            logOut();
            return Promise.reject(err)
          }).finally(() => {
            setTargetInfo();
          })
 }
  

三,目标页自动查询:

   created(){
		let params = new URL(location.href).searchParams;
	    let [id] = [params.get('id')];
	    if (id != undefined) {
	       //获取参数
	    }else{
	       //清空参数
	    } 
	   //查询列表
	   this.getList();   
}

四,效果图

vue实现跳转传参查询_第1张图片

更多精彩:

1.vue+iView 实现可输入的下拉框添加链接描述
2.实现搜索的历史记录功能(浏览器记录)
3.路由传值实现分类搜索
4.调用第三方接口跨域问题

5.vue+iView 权限实践之动态显示侧边栏菜单
6.vue+iView 跳转子菜单父级菜单保持高亮
7.vue+iView 树形菜单回显与选中

8.vue+iView 实现导入与导出excel功能
9.vue+iView table分页勾选记忆功能

喜欢就多多点赞关注。
在这里插入图片描述

你可能感兴趣的:(Vue,功能,UI框架踩坑指南,vue.js,前端,javascript,localStorage,iView,前端框架,数组)