• vue router 解决路由带参数跳转时出现404问题


    在这里插入图片描述
    我的页面是从一个vue页面router跳转到另一个vue页面,并且利用windows.open() 浏览器重新创建一个页签。但是不知道为什么有时候可以有时候又不行,经过反复测试与分析,最终发现是因为有一个参数的值里包含了小数点., 小数点是浏览器合法字符,不能通过encode编码转义,于是乎:利用windws.atob() 将json字符串转换未base64,接收端用windows.btoa(),将base64转义过来。问题得以解决。
    路由定义

    {
    	path: '/xxx/indexDetail:data',
    	name: 'indexDetail',
    	component: ()=> import('@/views/xxdx/indexDetail.vue'),
    	meta: { title: 'xxx', requiresAuth: true}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    发送端:

    import {useRouter} form 'vue-router'
    const router = useRouter();
    window.open(
    	router.resolve({
    		name: 'indexDetail',
    		params:{
    			data: window.btoa(JSON.stringify({'aaa': '1231.12'}));
    		}
    	}),
    	'_blank'
    )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    接收端:

    import {useRoute} form 'vue-router'
    const route = useRoute();
    params = window.atob(String(route.params.data));
    
    • 1
    • 2
    • 3

    但是,多次测试发现,window.atob() 参数内存在中文会报错。于是又一顿百度,最终完美解决
    发送方:

    import {useRouter} form 'vue-router'
    const router = useRouter();
    window.open(
    	router.resolve({
    		name: 'indexDetail',
    		params:{
    			data:window.btoa(encodeURIComponent(JSON.stringify({'aaa': '1231.12','bbb': '张三'})));
    		}
    	}),
    	'_blank'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    接收方:

    import {useRoute} form 'vue-router'
    const route = useRoute();
    params = decodeURIComponent(window.atob(String(router.params.data)));
    
    • 1
    • 2
    • 3
  • 相关阅读:
    C语音-笔记
    学Python的漫画漫步进阶 -- 第四步
    LeetCode 144. 二叉树的前序遍历
    OpenWrt 固件编译教程
    C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.11 数组简介
    MySQL创建和管理表
    MySQL之事务
    ROS 仿真
    全开源影视APP源码带后台 苍穹影视APP源码 免受权带安装教程
    docker学习(一)
  • 原文地址:https://blog.csdn.net/weixin_43865196/article/details/136567951