时间:2021-05-18
在vue项目的开发中经常会用到vuex来进行数据的存储,然而在开发过程中会出现刷新后页面的vuex的state数据初始化问题!下面是我用过的解决方法
1、利用storage缓存来实现vuex数据的刷新问题
我们可以在mutation等vuex的方法中对于数据进行改变时,将数据同时存储进我们的本地浏览器缓存中;下面是我在mutation中写的方法;
同步将数据的更改保存,也可以在页面调用vuex的mutation方法时同步更改;但是这种方法只能针对少量的数据需要保持不刷新,在真正的卡发中并不适用
2、利用已有的插件来进行保存新状态
一致的插件中,我目前使用的是vuex-along插件,该插件使用非常方便简洁。
通过 cnpm i vuex-along -D下载插件,在进行引入,在store里面通过plugin来使用,这样就能将所有的state的数据都进行保存,不回应为刷新而更改,当然如果你想仅对某些数据进行保存,也可以使用对应的插件的api来实现,具体的api请看github;
上面的代码仅为展示vuex-along插件的使用,项目的真实写法并不规范,对于一般项目会将vuex的每个模块独立拆分出来,分别进行管理
同时在项目中我们也都尽量使用辅助函数来实现vuex的管理,而不会应用原生的写法
对于state和getter的数据可以在计算属性中来因够用。而mutation和action则在methods方法应用;如果你需要修改计算属性,现在需要设置对应的setter。
以上纯属自己的一点意见,如果需要请采纳!
补充知识:vuex在刷新页面时保持数据不变(vuex状态持久化)
问题:
在 vue 项目中使用 vuex 来进行数据状态的管理,当刷新页面时,vuex 中 state 的数据会出现初始化问题(数据丢失)
解决方法:
1.使用 webStorage 缓存
当浏览器窗口关闭或者刷新时,会触发beforeunload事件,此时,可以使用 webStorage 缓存来实现 vuex 在刷新页面时保持数据不变
created(){ //在页面加载时读取sessionStorage里的状态信息 this.$store.state.userInfo = window.sessionStorage.getItem("userInfo") //在页面刷新时将vuex里的信息保存到sessionStorage里 window.addEventListener("beforeunload", () => { window.sessionStorage.setItem("userInfo", this.$store.state.userInfo) })}2.使用vuex状态持久化插件vuex-persistedstate
vuex-persistedstate插件使用浏览器的本地存储( local storage )对 vuex 的状态( state )进行持久化
安装 vuex-persistedstate:
npm install vuex-persistedstate --save-dev
在store文件夹的 index.js 中使用
//引入vuex-persistedstateimport createPersistedState from 'vuex-persistedstate'......export default new Vuex.Store({ ...... //配置vuex-persistedstate plugins: [createPersistedState( //配置将vuex的状态储存到sessionStorage中(默认储存到localStorage中) { storage: window.sessionStorage } )]})以上这篇解决vuex数据页面刷新后初始化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
众所周知,vuex的一个全局状态管理的插件,但是在浏览器刷新的时候,内存中的state会释放,通常的解决办法就是用本地存储的方式保存数据,然后再vuex初始化的
解决vuex页面刷新导致数据丢失问题vuex数据是存在内存当中,当页面刷新之后vuex数据自然会丢失。我们有两种方法解决该问题:1.使用vuex-along2.
最近做的项目中,有增删改表格功能,在操作后需要实时更新页面数据。下面可以这样解决。1、在methods中定义好一个初始化渲染实例。例如lnitializatio
初始化默认数据: 依次按下面操作即可:后台-》系统设置-》数据更新中心-》1、更新数据库缓存2、恢复栏目目录3、删除栏目缓存文件4、刷新首页5、刷新所有信息栏目
jquery和js初始化加载页面的区别:jquery:等待页面加载完数据,以及页面部分元素(不包括图片、视频),js:是页面全部加载完成才执行初始化加载。1、j