博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【vue项目 刷新一下之后 内容消失?】+ 用 route 传递数据
阅读量:4143 次
发布时间:2019-05-25

本文共 2071 字,大约阅读时间需要 6 分钟。

具体的原因 还是 看看https://www.cnblogs.com/attacking-cabbage/p/10846211.html

这个问题的原因是因为当用vuex做全局状态管理的时候,store中的数据是保存在运行内存中的,页面刷新时会重新加载vue实例,store中的数据就会被重新赋值,因此数据就丢失了

可以用local storage 但是 性能不太好  所以 可以用文中方法  也可以下面 因为是跳转到了新的界面之后数据消失了  所以  传进去的路由不要传vuex里面的

 

要刨根问底呀~ 不然不会进步

子组件这样

不过就是解析的时候有点难看
this.details = JSON.parse(this.$route.query.details);

外面推的时候

this.$router.push({ name: 'screen',query:{details: JSON.stringify(this.details)} })

local storage不好

是路由传的时候没传进去?我的天啊 这我怎么能想的到 
先是传递进去的时候 param改成了 query
然后  具体的detail是哪里赋值的?看了一下,原来是在外面赋值 然后存到detail里面去, 里面刷新 外面的就没了(大概是这个意思)
然后 就把detail保存一下 直接传进子组件里面去 不依赖于vuex的全局变量(刷新的时候会重新创建实例)
后来发现这个vuex的问题,除了detail之外 其他的用户名什么的也会一起出问题。于是我~ 一起改了改
因为太多,而且怕roles直接全局替换不太好?emmm然后反正就 
 this.roles=this.$store.state.user.roles;
        //console.log("百试百灵bug消除",this.roles);
        this.$router.push({ name: 'contractDetail', query: { compo: compo,details: JSON.stringify(this.details), roles: JSON.stringify(this.roles)}});

this.$store.state.user.roles = JSON.parse(this.$route.query.roles);

_(:з」∠)_ _(:з」∠)__(:з」∠)_
关键是这个gg的还有两个地方跳转,经常搞混。(吐槽一下自己找到一堆bug  测试啥都看不出来 跟他说了也只知道端口和发数据。。。你行你来啊)

=====================================================

然后有一个可以说是极其重大的发现,就是如果js错误的话,火狐没报,也可能我不会看?(谷歌的开发者界面难用得都不能用。。还是火狐吧)页面还是好的,继续跑,所以你会发现没有console.log
只是因为里面错了 
只是因为里面错了 
不是因为create没有被调用  哈哈哈哈 
今天改这个的时候  其实其实完全只是因为role没定义  不是传不进来 
反正到处console看一下嘛  前后数据都有的 恍然若悟
还是用那个分段法  把我这句百试百灵到处摆上 然后定位跑到哪里的时候不动了/
一般create里面这样解决完全足够~
前端还是很有意思的哈哈哈哈   wish u enjoy it
=====================================================

对了 最后 每次喝酸奶的时候 我都感觉人生价值得到了升华

==========================================================传递数据

3. 通过 query 传递

    // 带查询参数,变成 /register?plan=private

    router.push({ path: 'register', query: { name: 'sxh' }});

注: query 传参是针对 path 的

这种接收参数的方式是

this.$route.query.name

 

其他方法

1. 通过 path 传递

    this.$router.push({path:`/user/${userId}`});

    // this.$router.push(`/user/${userId}`);

注: 这样传递参数的话, 配置路由的时候需要在 path 上加参数: path: 'user/:userId'

这种接收参数的方式是

this.$route.params.userId

2. 通过 params 传递

    // 命名的路由

    router.push({ name: 'user', params: { userId: 123 }});

注: params 传参是针对 name 的

这种接收参数的方式是

this.$route.params.userId

 

你可能感兴趣的文章
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>
php程序员看过来,这老外是在吐糟你吗?看看你中了几点!
查看>>
为什么说程序员是“培训班出来的”就是鄙视呢?
查看>>
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>
第四章 微信飞机大战
查看>>
九度:题目1008:最短路径问题
查看>>
九度Online Judge
查看>>
九度:题目1027:欧拉回路
查看>>
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>