You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React待办应用提交时LocalStorage显示正常,刷新后数据丢失如何解决?

问题根因

你的代码中两个useEffect的声明顺序错误,这是导致刷新后本地存储被清空的核心原因:
React组件挂载时会严格按照useEffect的声明顺序依次执行回调:

  1. 首先执行声明在前的、依赖为[todos, status]的useEffect,此时todos还是初始化的空数组,调用saveLocalTodos()会直接把空数组写入localStorage,覆盖掉你之前已经存储的待办数据
  2. 之后才执行声明在后的空依赖useEffect调用getLocalTodos(),此时读到的已经是刚被覆盖的空数组
修复方案
  • 调换两个useEffect的声明顺序,优先执行本地数据读取逻辑,再执行数据变动后的存储逻辑
  • (可选优化)可以给存储逻辑增加校验避免无意义的写入,但调整顺序已经可以解决核心问题

修复后的代码片段参考:

// 优先读取本地存储的待办数据
useEffect(() => {
  getLocalTodos()
},[])

// todos或筛选状态变动后,再执行过滤和本地存储更新
useEffect(() => {
  filterHandler()
  saveLocalTodos()
},[todos, status])

内容的提问来源于stack exchange,提问作者AlexJanow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:15:06