本文共 976 字,大约阅读时间需要 3 分钟。
原因:
store本意不是用来存储数据的,而是存储组件状态。 但是因为存取速度比sessionStorage快。所以还是有人用来存数据。比如我。 那么这个重置的问题要咋搞呢? 解决办法: 使用window的beforeunload事件将store中的数据存储到sessionStorage中。 然后再声明周期函数created()中将session的数据替换掉vue中的store数据 不过这里有一个要注意异步的问题。因为js是异步执行机制。所以必须要等到session中的数据存储到store中之后才能执行涉及该store数据的代码,不然全部都是undefined。 可以通过promise对象来进行同步化具体代码:
// 先建立seesion工具来统一调用// util_session.jsimport store from '../vuex/store'// 用于sessionStorage替换store函数。export function sessionReplaceStore (name) { return new Promise((resolve, reject) => { if (sessionStorage.getItem(name)) { // 替换state状态 store.replaceState( Object.assign( { }, store.state, JSON.parse(sessionStorage.getItem(name)) ) ) resolve(true) } else { resolve(false) } })}// vue文件// xxxx.vue// 无关的内容就不写了
这样就可以了。
代码说明:
参考文档:
参考文档:
参考文档:
转载地址:http://qkepi.baihongyu.com/