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传递参数丢失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:- 解决vue页面刷新或者后退参数丢失的问题
- vue路由传参页面刷新参数丢失问题解决方案
- 解决vue-cli刷新页面时通过路由传递的参数消失问题
- vue打开二级或者三级页面传输对象,再刷新浏览器数据丢失问题解决(vue使用router传递数据)
- js页面之间以及vue $http请求向后台传递参数中文乱码问题解决
- 结合localStorage解决vuex页面刷新数据丢失的问题
- JSP页面中超链接传递中文参数出现乱码问题解决方法
- vue 路由传递参数,刷新页面后参数丢失
- 解决javascript通过url向Jsp页面传递中文参数乱码问题
- Vuex数据页面刷新丢失问题解决方案
- 解决asp页面向aspx页面传递中文参数乱码问题
- php session跨页面传递 session值丢失问题之完美解决
- JavaScript跳转页面/Action并传递中文参数[解决js超链接传递过程中产生的中文乱码问题]
- 解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题
- vue页面跳转并传递参数 保存参数到网址?a=&b= 解决 刷新页面 无法保存接收到的参数情况
- net传递中文参数数据丢失问题解决方案 ,传递中文参数报错
- JS实现网页开窗刷新 GeT传递参数成功 远程打开页面失败的解决方法
- php session跨页面传递 session值丢失问题之完美解决
- vue页面刷新或者后退参数丢失的问题
- vue刷新页面带的参数丢失问题