报名工具小程序_vue单页应用在页面改写时保留状

发布时间:2021-01-08 12:21 作者:jianzhan

摘要: vue宣传单页运用在网页页面更新时保存情况数据信息的方式 今日网编就为大伙儿共享一篇vue宣传单页运用在网页页面更新时保存情况数据信息的方式,具备非常好的参照使用价值

vue单页应用在页面刷新时保留状态数据的方法       今天小编就为大家分享一篇vue单页应用在页面刷新时保留状态数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在Vue单页应用中,如果在某一个具体路由的具体页面下点击刷新,那么刷新后,页面的状态信息可能就会丢失掉。这时候应该怎么处理呢?如果你也有这个疑惑,这篇文章或许能够帮助到你

一、问题

现在产品上有个需求:单页应用走到某个具体的页面,然后点击刷新后,刷新的页面要与刷新前的页面要保持一致。

这时候就需要我们保存刷新之前页面的状态。

二、一种解决方案

在这个Vue单页应用中,王二是用Vuex作为状态管理的,一开始王二的思路是将Vuex里的数据同步更新到localStorage里。

即:一改变vuex里的数据,便触发localStorage.setItem 方法,参考如下代码:

import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
function storeLocalStore (state) {
 window.localStorage.setItem("userMsg",JSON.stringify(state));
export default new Vuex.Store({
 state: {
 username: "王二",
 schedulename: "标题",
 scheduleid: 0,
 mutations: {
 storeUsername (state,name) {
 state.username = name
 storeLocalStore (state)
 storeSchedulename (state,name) {
 state.schedulename = name
 storeLocalStore (state)
 storeScheduleid (state,id) {
 state.scheduleid = Number(id)
 storeLocalStore (state)
})

然后在页面加载时再从localStorage里将数据取回来放到vuex里,于是王二在 App.vue 的 created 钩子函数里写下了如下代码:

localStorage.getItem("userMsg") this.$store.replaceState(JSON.parse(localStorage.getItem("userMsg")));
//考虑到第一次加载项目时localStorage里没有userMsg的信息,所以在前面要先做判断

这样就能比较圆满的解决问题了。

三、另一种解决方案

以上的解决方法由于要频繁地触发 localStorage.setItem 方法,所以对性能很不友好。而且如果一直同步vuex里的数据到localStorage里,我们直接用localStorage做状态管理好了,似乎也没有必要再用vuex。

这时候王二想,如果有什么方法能够监听到页面的刷新事件,然后在那个监听方法里将Vuex里的数据储存到localStorage里,那该多好。

很幸运,还真有这样的监听事件,我们可以用 beforeunload 来达到以上目的,于是王二在 App.vue 的 created 钩子函数里写下了如下代码:

 //在页面加载时读取localStorage里的状态信息
 localStorage.getItem("userMsg") this.$store.replaceState(JSON.parse(localStorage.getItem("userMsg")));
 //在页面刷新时将vuex里的信息保存到localStorage里
 window.addEventListener("beforeunload",()= {
 localStorage.setItem("userMsg",JSON.stringify(this.$store.state))
 })

这样的话,似乎就比较完美了。

2018年03月27日补充:

王二在使用上述方法时,遇到了一个问题,就是:在开发阶段,如果在Vuex里添加新的字段,则新的字段不能被保存到localStorage里,于是上述代码修改如下:

 //在页面加载时读取localStorage里的状态信息
 localStorage.getItem("userMsg") this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("userMsg"))));
 //在页面刷新时将vuex里的信息保存到localStorage里
 window.addEventListener("beforeunload",()= {
 localStorage.setItem("userMsg",JSON.stringify(this.$store.state))
 })

以上这篇vue单页应用在页面刷新时保留状态数据的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持凡科。


  • 怎样设定一个微信小程序

    今早晨来,手机上手机微信不张杨公布手机微信微信小程序可用个人行为行为主体变化功效的新闻报道报导漫天飞,大家针对这事探讨争相,都说手机微信微信小程序将迈进一场“关键

  • 微信小程序霸屏是如何保

    模拟题目:手机微信微信小程序刷屏是怎样确保的?全是伎俩! 没有什么质疑的是,背靠手机上手机微信为流量池的手机微信微信小程序早就变为了现如今互联网独立自主创业的很大通

  • 小程序还是APP,企业该如

    微信小程序和APP在实质上尽管沒有很大的差别,他们全是一个运用手机软件的前端开发数据信息解决,但在储存、开发设计周期时间、散播裂变式特点上差别還是十分大的。 APP和微信小

  • 三月都快完后,还没有寻

    三四月份可以称作一年当中企业工作中中工作中工作人员流动性性很大的状况下,俗话说得对“金三银四”,这两个月确实是给了学员学生就业者十分大的机会,但是现阶段三月都快过

  • 做手机微信微信小程序自

    模拟题目:做手机上手机微信手机微信微信小程序独立自主创业的商业服务服务小技巧 每一个人都是谈独立自主创业谈获得取得成功,这一阶段连搞淘宝网网,做自媒体平台服务平台,