使用sessionStorage替代vuex
2019-07-24 本文已影响0人
前端艾希
About
请大家看到题目后不要误解,本文提出的观点是在某些场景下使用sessionStorage
或者localStorage
可能比vuex
更好。
注:本文不会介绍localStorage
和sessionStorage
、cookie
以及vuex
的具体别,只分享一次项目经历
使用sessionStorage替代vuex
一、项目背景描述
一个页面的数据需要从首页发送ajax
获取,因为数据量较为庞大,所以我们可以采用除cookie
以外的其他方式进行存储,但是因为这些数据可能会经常面临更新,所以每次登录网站时都必须要重新获取一遍数据,所以不采用localStorage
,我们就只剩下两种方式了。
二、通过vuex存储数据
我们可以在获取到json
数据后通过commit
一个mutation
去将数据存放在事先定义好的state
中,然后在需要该数据的页面中直接从store
中去取,但是这样会造成一些预期外的影响,如图所示:
可以看到从首页进入到地址选择页面时,该页面能正常显示,但是刷新后,页面中的数据就丢失了,是因为,我们将地址列表存储在
vuex
中,而刷新会清空vuex
,如图所示:清空vuex.gif
刚开始我们的
state
中存有数据,但是刷新后,所有的数据都清空了,所以页面就不能正常显示了。
三、使用sessionStorage存储数据
我们在首页中把拿到的数据存储在sessionStorage
中,只要网页没有被关闭,这些数据就能一直保存,代码如下:
getCityInfo () {
axios.get('/api/city.json').then(this.createCityList)
},
createCityList (res) {
const {code, data} = res.data
if (code) {
sessionStorage.setItem('inHotList', JSON.stringify(data.hotCities))
sessionStorage.setItem('outHotList', JSON.stringify(data.hotList))
sessionStorage.setItem('allCities', JSON.stringify(data.cities))
}
}
这样,即使我们刷新网页,数据也不会丢失,效果如图:
页面正常显示.gif
结束语
每天多写一点点,每天进步一点点