使用LocalStorage后页面刷新仍丢失Eintraege数组数据求助
问题修复方案
1. 修正LocalStorage服务的saveData方法
当前saveData方法硬编码了key值,未使用传入的参数(虽当前调用场景未直接引发问题,但属于代码隐患):
public saveData(key: string, value: string) { localStorage.setItem(key, value); // 将硬编码的'token'替换为传入的key参数 }
2. 完善组件的getEintraege方法
这是刷新后数据丢失的核心原因:你仅调用了getData获取存储的字符串,但未将其解析为数组并赋值给组件的eintraege变量,导致页面刷新后数组仍为初始空状态:
getEintraege(): void { const savedData = this.eintragService.getData('token'); if (savedData) { this.eintraege = JSON.parse(savedData) as Eintrag[]; // 解析JSON字符串并赋值给组件数组 } }
3. 补全add方法的语法规范
确保方法最后一行添加分号(TypeScript允许省略,但规范写法需补充):
add(beschreibung: string, faelligkeitsdatum: string) { var eintrag: Eintrag = { beschreibung: '', faelligkeitsdatum: '', erledigt: false, }; eintrag.beschreibung = beschreibung; eintrag.faelligkeitsdatum = faelligkeitsdatum; eintrag.erledigt = false; this.eintraege.unshift(eintrag); this.eintragService.saveData('token', JSON.stringify(this.eintraege)); // 补充分号 }
问题根源总结
- 存储环节:服务方法未正确使用传入的key参数,存在代码维护隐患
- 读取环节:未将LocalStorage中存储的JSON字符串解析为数组并赋值给组件变量,导致页面刷新后数据未加载
内容的提问来源于stack exchange,提问作者user19434217
相关产品推荐
相关产品推荐

