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

如何使用React Hooks将选中的图片存储到Local Storage解决刷新丢失问题

问题根源

你当前使用URL.createObjectURL()生成的是指向浏览器内存中本地文件的临时链接,该链接的生命周期仅和当前页面会话绑定,页面刷新/关闭后就会被浏览器自动回收失效,哪怕你将这个链接字符串存在LocalStorage中,下次加载时地址也已经无效,所以图片无法正常显示。

解决方法

将选中的图片文件转换为Base64格式的字符串再存入LocalStorage,Base64是纯文本格式可直接持久化存储,读取后可直接作为图片src的值加载。

只需要修改PersonalDetails.js中的onChangePicture方法即可,修改后代码如下:

const onChangePicture = e => {
  const selectedFile = e.target.files[0];
  if (!selectedFile) return;
  // 用FileReader将文件转成Base64
  const fileReader = new FileReader();
  fileReader.onload = (loadEvent) => {
    const base64Image = loadEvent.target.result;
    setPicture(base64Image);
  };
  fileReader.readAsDataURL(selectedFile);
};

补充说明

  • LocalStorage单域存储上限一般为5MB,足够存储常规尺寸的头像图片,如果需要存储更大的图片资源可以改用IndexedDB
  • 你的useLocalStoragehook无需修改,本身逻辑可以正常序列化存储Base64字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:54:03