博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]vue解决刷新页面vuex数据、params参数消失的问题
阅读量:5172 次
发布时间:2019-06-13

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

一般项目都会有一些逻辑需要传递值给另一个页面,那么有的时候就会出现一个问题:用户刷新了页面,诶?数据没了,参数错误。那么今天经过总结,解决了这个问题。我在最新的项目中,通过了一下几种情况进行传值:

1、通过路由传值,params或query

2、通过vuex进行状态管理 $store.state...

3、使用localStorage进行传值

那么,关于刷新页面数据消失原因有两种,一是通过路由params传值,二是vuex传值

一、通过路由params传值

    路由传值有两种方式,params和query,params传值刷新页面是要消失的,然而query却不会,两者的区别就在于query会把传递的参数显示在url地址中,就像这样:/adminUser/001001001?jum=001001001211,参数过多的话url地址会变得非常难看,如果你并不在意url地址难看与否,那么你可以不使用params,而是使用query,只是切换个单词而已,这是一种方法(不是最优办法)。

    还有一种方法,就是在定义路由的时候,给path设定参数,举个例子,一看就懂

export default [{

path: '/platform',
component: Layout2,
children: [{
path: '/adminCun/:jum', //这里值用:加参数的写法,jum即为参数,注意一定要用/隔开
name:'platformRecycleAdminCun',
meta:{
title:'管辖村级详情'
},
component: resolve => require(['@/view/platform/recycle/admincun'],resolve)
}]
}]
<template slot-scope="props">
<el-button type="text" @click="$router.push({name:'platformRecycleAdminCun',params:{jum:props.row.jgNum}})">
{
{ props.row.jgName }}
</el-button>
</template>
这样就可以随心所欲的刷新了。

二、还有一种就是使用vuex

    页面刷新store.state中的数据消失是不可避免的,那么使用localStorage来避免这个问题。发现问题的时候我就考虑到存数据在localStorage里,但是一个一个数据添加实在是太蠢了。那么就需要一个全局的方法来,将store的数据存储在localStorage里。具体的方法也是百度的很好用,也很方便。

    在App.vue中,created初始化生命周期中写入以下方法

//在页面刷新时将vuex里的信息保存到localStorage里
window.addEventListener("beforeunload",()=>{
localStorage.setItem("messageStore",JSON.stringify(this.$store.state))
})
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("messageStore") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("messageStore"))));
replaceState这个方法呢,查了api,就是替换 store 的根状态,然后通过对象赋值assign将localStorage进行赋值

beforeunload这个方法是在页面刷新时触发的,将store中的信息存入localStorage

这样就通过localStorage来避免vuex刷新数据消失的问题了。

 

以上是路由传参和vuex存值、传值的时候刷新页面数据消失的解决办法。

---------------------
作者:Dreamer_xr
来源:CSDN
原文:https://blog.csdn.net/xr510002594/article/details/84302734
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/zouzhongxing/p/10824408.html

你可能感兴趣的文章
大衍数列
查看>>
C#中WinForm的textbox回车问题
查看>>
解决insmod: error inserting 'helloworld.ko': -1 Invalid module format(转)
查看>>
数据库--循环语句:while loop/end loop
查看>>
switch和if语句
查看>>
【Oracle】Oracle中常用的系统函数
查看>>
HDU1574 RP问题
查看>>
单词记忆(1)
查看>>
MongoDB
查看>>
如何通过SQL命令查看数据库的文件大小[转]
查看>>
JavaScript 条件语句
查看>>
Android腾讯微薄客户端开发十二:博主的偶像
查看>>
ReShaper工具
查看>>
[USACO15DEC]最大流Max Flow
查看>>
C#虚基类继承与接口的区别
查看>>
Resume简历中装B的词汇总结大全
查看>>
204. Count Primes
查看>>
gets函数
查看>>
Dubbo源代码分析(三):Dubbo之服务端(Service)
查看>>
yum命令具体解释
查看>>