1 回答
TA贡献1802条经验 获得超6个赞
为了使用 localStorage 保存应用程序的状态,您需要创建如下函数:
function save(slotIndex, clicks) {
let slots;
try {
slots = JSON.parse(localStorage.getItem('slots'));
} catch (e) {
console.error(e);
}
if (!slots) {
slots = [0, 0, 0, 0];
}
slots[slotIndex] = clicks;
localStorage.setItem('slots', JSON.stringify(slots));
}
function restore(slotIndex) {
let slots = [];
try {
slots = JSON.parse(localStorage.getItem('slots'));
} catch (e) {
alert('no slots found in local storage');
}
return slots[slotIndex] || 0;
}
这里有一个应用程序的版本,其中包含我的更改。
需要注意的是,我们保存的状态只是已发生的点击次数,这对应于将用于在一个国家着色的下一个颜色。
我怀疑你真正想要保存的是国家本身的颜色。
这将需要更复杂的数据结构:
const slots = [
{
currentColorIndex: 2,
selectedCountries: [
{ id: 'spain', colorIndex: 3 },
{ id: 'usa', colorIndex: 1 },
]
},
... other slots
];
只要将其字符串化(localStorage 中的所有值都必须是字符串),这也可以存储在 localStorage 中。在您的应用程序中,每当您更改 SVG 中的颜色时,您都需要更新此结构,以确保它们彼此保持同步。
这是应用程序开始变得复杂的地方,我建议查看类似 MVC(模型视图控制器)模式的内容,以了解开发人员通常如何处理此问题。
添加回答
举报