vue-router-传参中,两个也没传入对象需要格式化数据问题-JSON.parse-JSON.stringify

a页面跳转到b页面的,b页面需要a页面提供过来的参数:

关于路由传参有很多中方式,这里只说明常用到的一种:

刷新页面后数据不会丢失的编程式传参:

1:a页面跳转并传参:this.$router.push({path: `/roleAccess/${roleP}`})

2:b页面接收参数:console.log(this.$route.params)

3:另外-路由需要配置:

{
path:"/roleAccess/:data",
name:"roleAccess",
component:roleAccess,
},

三步即可:不过这种传参跳转b页面后b页面的路径后面会跟随数据,这是缺点,优点是即便是在b页面刷新了数据也不会丢失掉(当然也可以用其它方式传参然后用其它方式追述数据,比如缓存和状态管理等)

4:这种方式有个不好的地方,就是传入的值如果是obj对象 那么b页面读取到的也是一个obj对象比如:“[object,object]”

这就需要用到了:在a页面传入参数时:JSON.stringify(data)

然后在b页面接收数据时:JSON.parse(this$roue.params.data)

注意:1:跳转时候是this.$router.push  b页面打印时是$route.params

2:b页面获取值时需要加判断,如果有值才 JSON.parse 不然会报错:报错信息大致就是 

 Unexpected token o in JSON at position 1  -JSON.parse解析错误

 

参考:

Apage

复制代码
            //跳转查看角色权限
            ToRoleAcessPage(tags){
                let roleP = JSON.stringify(tags)
                // /roleAccess
                // this.$router.push('/roleAccess')
                this.$router.push({
                  path: `/roleAccess/${roleP}`
                })
            },
复制代码

Bpage

复制代码
            getdataInit(){
                console.log(this.$route.params)
                if(this.$route.params){
                    let obj = this.$route.params.data
                    let res = JSON.parse(obj)
                    this.data[0].accessNote = res.roleNote
                    this.data[0].accessName = ""
                    res.roleAccess.map(item=>{
                        this.data[0].accessName += item + " "
                    })
                    console.log(res,this.data)
                }
            }
        },
复制代码

 

posted @   少哨兵  阅读(426)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示