鍍金池/ 問(wèn)答/HTML5  網(wǎng)絡(luò)安全/ sessionStorage中的key可以是變量值嗎?

sessionStorage中的key可以是變量值嗎?

為了減少與后臺(tái)的交互帶來(lái)的加載時(shí)間,
現(xiàn)在擬將從后臺(tái)獲取的對(duì)象暫存在sessionStorage中
之后需要的時(shí)候直接從sessionStorage中取
但是當(dāng)前頁(yè)面可能存在組件復(fù)用,
同一個(gè)組件中sessionStorage中key如果一樣的話,
所有組件取到的value會(huì)都一樣,導(dǎo)致顯示與預(yù)期不符合。
現(xiàn)在想把組件的ID作為sessionStorage的key,
但是調(diào)試了幾次獲得的對(duì)象都是null
sessionStorage是不支持變量做key嗎?
如果可以的話,我的方法哪里出問(wèn)題了。
另外也想請(qǐng)教一下類似這種將后端信息緩存的手段,
除了sessionStorage外還有其他更優(yōu)選擇嗎?

self.warningData = response.data.data;
var data = self.warningData;
var id = self.myInfoData.id;
sessionStorage.setItem(id,data)
回答
編輯回答
醉淸風(fēng)

key是變量時(shí)完全可以的,問(wèn)題出在storage(包括sessionStorage和localStorage)只能存儲(chǔ)字符串的數(shù)據(jù),無(wú)法直接存儲(chǔ)js對(duì)象和數(shù)組。如果需要存儲(chǔ)對(duì)象或者數(shù)組,可以用JSON.stringify先轉(zhuǎn)化成字符串類型存儲(chǔ)進(jìn)去,讀取之后再解析即可。例如:

var session = {
    'screens' : [],
    'state' : true
};
localStorage.setItem('session', JSON.stringify(session));
var restoredSession = JSON.parse(localStorage.getItem('session'));
console.log(restoredSession);
2017年4月24日 22:12