vue中router传参方式有什么?刷新页面数据丢失怎样解决?
Admin 2021-10-15 群英技术资讯 1046 次浏览
这篇文章我们主要了解关于vue中router传参方式,本文有示例代码供大家参考,感兴趣的朋友可以了解看看,另外本文还分享了刷新页面数据丢失的解决方法,接下来我们一起了解看看吧。
Vue Router 传参方式:
1. this.$router.push({ name: '模块名称', params: { // 各参数 } })
router.js:
export default new Router({ routes: [ { path: '/paramsPassingByRouter', component: ParamsPassingByRouter, children: [ { path: 'paramsMode', name: 'paramsMode', component: ParamsMode } ] } ] })
ParamsPassingByRouter.vue:
<!-- html --> <button @click="paramsMode(testData)">params传参</button> <!-- js --> <script> export default { data () { return { testData: { id: '20180101', name: '张三', aka: 'z3', age: '18' } } }, methods: { paramsMode (data) { this.$router.push({ name: 'paramsMode', params: data }) } } } </script>
ParamsMode.vue:
<!-- html --> <div class="params-mode">{{ testData }}</div> <!-- js --> <script> export default { data () { return { testData: {} } }, created () { this.testData = this.$route.params } } </script>
效果:
url:http://localhost:8081/#/paramsPassingByRouter/paramsMode
页面显示:{"id":"20180101","name":"张三","aka":"z3","age":"18"}
但是刷新页面后,数据会丢失,显示:{}。
2. this.$router.push({ name: '模块名称', query: { // 各参数 } })
router.js:
export default new Router({ routes: [ { path: '/paramsPassingByRouter', component: ParamsPassingByRouter, children: [ { path: 'queryMode', name: 'queryMode', component: QueryMode } ] } ] })
ParamsPassingByRouter.vue:
<!-- html --> <button @click="queryMode(testData)">query传参</button> <!-- js --> <script> export default { data () { return { testData: { id: '20180101', name: '张三', aka: 'z3', age: '18' } } }, methods: { queryMode (data) { this.$router.push({ name: 'paramsMode', query: data }) } } } </script>
QueryMode.vue:
<!-- html --> <div class="query-mode">{{ testData }}</div> <!-- js --> <script> export default { data () { return { testData: {} } }, created () { this.testData = this.$route.query } } </script>
效果:
url:http://localhost:8081/#/paramsPassingByRouter/queryMode?id=20180101&name=%E5%BC%A0%E4%B8%89&aka=z3&age=18
页面显示:{"id":"20180101","name":"张三","aka":"z3","age":"18"}
刷新页面后,数据不会丢失。
解决刷新页面数据丢失的方案:
使用 this.$router.push({ name: '模块名称', query: { // 各参数 } }) 方式传参。
缺点:参数值都拼接在 url 上,url 会很长,同时都可被看到。
this.$router.push({ name: '模块名称', params: { // 各参数 } }) 路由文件设置的时候把参数拼到 url 里。
url:http://localhost:8081/#/paramsPassingByRouter/paramsMode/20180101/%E5%BC%A0%E4%B8%89/z3/18
缺点:同上。
1 和 2 结合使用:this.$router.push({ name: '模块名称', params: { // 各参数 }, query: { // 各参数 } })。
老老实实的用 localStorage 存储。
url: http://localhost:8081/#/paramsPassingByRouter/paramsMode/z3
可以与 params 和 query 方式配合使用,可以暴露的参数显示在 url 上,同时刷新参数也不会丢失。
销毁页面的时候把 localStorage 存储的内容清除。
// router.js
{
path: 'paramsMode/:aka',
name: 'paramsMode',
component: ParamsMode
}
<!-- ParamsMode.vue 修改 -->
<script>
export default {
data () {
return {
testData: {}
}
},
created () {
const tempData = localStorage.getItem('tempData')
if (tempData) {
this.testData = JSON.parse(tempData)
} else {
this.testData = this.$route.params
localStorage.setItem('tempData', JSON.stringify(this.$route.params))
}
},
beforeDestroy () {
localStorage.removeItem('tempData')
}
}
</script>
关于vue中router传参的方式及刷新页面数据丢失的解决方法就介绍到这,希望能对大家有帮助,想要了解更多vue中router传参的内容,大家可以关注其它的相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
JavaScript中FontFace对象的使用方式 目录 介绍 兼容性 创建FontFace对象 FontFace对象属性 FontFace对象方法 将创建的FontFace字体添加到页面中 通过字体Promise回调添加 通过Ajax获取字体文件后回调添加 页面中使用我们添加的字体 css事先定义好 通过js更改元素的字体 FontFace字面理解就是字体脸,也就是文字字体样式的意思,它是通过使用javascript来定义字体对象,并且引入客户端没有安装得字体文件,可以是者服务器端,或者是第三方字体库文件. 介绍 基本语法: concat fo
js中模块化是什么意思?有什么用?很多新手对js中模块化可能不是很了解,对此,下面小编就给大家介绍一下模块化的概念和作用,以及怎样实现模块化,有需要的朋友可以参考,接下来我们一起往下看吧。
本文实例为大家分享了Exif.js图片旋转修正的具体方法,供大家参考,具体内容如下上传后图片旋转修正测试流程上传 -> base64展示 -> 获取旋转值 -> 修正 -> 修正后展示 -> 转换b
这篇文章主要为大家详细介绍了Vue实现学生管理功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Element UI 是 PC 端比较流行的 Vue.js UI 框架,它的组件库基本能满足大部分常见的业务需求。但有时候会有一些定制性比较高的需求,组件本身可能没办法满足。最近在项目里就碰到了。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008