sessionStorage中的key可以是变量值吗?

为了减少与后台的交互带来的加载时间,
现在拟将从后台获取的对象暂存在sessionStorage中
之后需要的时候直接从sessionStorage中取
但是当前页面可能存在组件复用,
同一个组件中sessionStorage中key如果一样的话,
所有组件取到的value会都一样,导致显示与预期不符合。
现在想把组件的ID作为sessionStorage的key,
但是调试了几次获得的对象都是null
sessionStorage是不支持变量做key吗?
如果可以的话,我的方法哪里出问题了。
另外也想请教一下类似这种将后端信息缓存的手段,
除了sessionStorage外还有其他更优选择吗?

self.warningData = response.data.data;
var data = self.warningData;
var id = self.myInfoData.id;
sessionStorage.setItem(id,data)
阅读 3.6k
1 个回答

key是变量时完全可以的,问题出在storage(包括sessionStorage和localStorage)只能存储字符串的数据,无法直接存储js对象和数组。如果需要存储对象或者数组,可以用JSON.stringify先转化成字符串类型存储进去,读取之后再解析即可。例如:

var session = {
    'screens' : [],
    'state' : true
};
localStorage.setItem('session', JSON.stringify(session));
var restoredSession = JSON.parse(localStorage.getItem('session'));
console.log(restoredSession);
推荐问题
宣传栏