vue中router传参方式有什么?刷新页面数据丢失怎样解决?
Admin 2021-10-15 群英技术资讯 691 次浏览
这篇文章我们主要了解关于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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录累加/累积求最大/最小值格式化搜索参数反序列化搜索参数拉平嵌套数组实现 flat数组去重数组计数获取对象多个属性反转字符串不知道大家平常用 Reduce 多不多,反正本瓜用
这篇文章主要为大家详细介绍了Vue组件库ElementUI实现表格列表分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要介绍了VUE使用ElementUI下拉框 @change事件数据不回显问题。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要为大家详细介绍了js实现上传图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
当我点击饼图时,出现相应的内容,并重新渲染饼图展示内容 饼图点击事件this.conechart.on(click, (params) = { params.name});获取的是点击的对应的板块名 利用获取的板块名,去接口调取对应的数据 , 调取数据是异步调用 ,所以重新渲染视图要在 异步中渲染,否则同步渲染不
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008