让React状态刷新不丢失:react-custom-hooks的useStorage(localStorage/sessionStorage)完整指南

发布时间:2026/8/23 12:12:43

让React状态刷新不丢失:react-custom-hooks的useStorage(localStorage/sessionStorage)完整指南
让React状态刷新不丢失react-custom-hooks的useStoragelocalStorage/sessionStorage完整指南【免费下载链接】react-custom-hooksReact Custom Hooks S.Leschev: useArray useAsync useClickOutside useCookie useCopyToClipboard useDarkMode useDebounce useDebugInformation useDeepCompareEffect useEffectOnce useEventListener useFetch useGeolocation useHover useLongPress useMediaQuery useOnlineStatus useOnScreen usePrevious useRenderCount useScript etc.项目地址: https://gitcode.com/gh_mirrors/re/react-custom-hooks还在为 React 应用刷新页面后状态全部清零而烦恼吗开源项目react-custom-hooks中的useStorage自定义钩子正是解决这个问题的利器。它基于浏览器原生的localStorage和sessionStorage让你用类似useState的写法把 React 状态轻松持久化到本地存储中——刷新不丢、关闭浏览器也不丢。本文是面向初学者的完整指南带你从零上手这个强大的 React 状态持久化方案。 为什么 React 状态会在刷新后丢失React 的useState把数据保存在组件的内存里。这意味着用户一按F5 刷新状态立刻回到初始值用户关闭再打开浏览器填了一半的表单、选好的主题设置全部消失。手动对接localStorage也很繁琐读数据、JSON.parse、写数据、JSON.stringify还得处理各种边界情况。useStorage把这些全部封装好了你只需要专注业务逻辑。⚡ 认识 useStorage一个文件两个钩子useStorage的源码非常小巧位于src/hooks/useStorage/useStorage.js它对外提供两个钩子用法几乎一致钩子对应存储数据生命周期useLocalStoragelocalStorage长期保存关闭浏览器后依然存在useSessionStoragesessionStorage会话级保存关闭标签页即清空调用后返回一个三元组当前值value—— 可直接渲染到界面上设置函数setValue—— 像useState的 setter 一样更新状态同时自动写入存储移除函数remove—— 一键清除存储中的这条数据让组件回到默认值。所有数据都会自动做JSON 序列化/反序列化所以字符串、数字、对象、数组都能直接存取不需要你操心格式转换。 3 步上手让状态刷新后依然健在第一步获取项目代码如果还没有本地代码执行下面命令克隆仓库即可git clone https://gitcode.com/gh_mirrors/re/react-custom-hooks第二步在你的组件里调用钩子项目自带的示例组件src/hooks/useStorage/StorageComponent.js展示了最典型的用法核心只有两行const [name, setName, removeName] useSessionStorage(name, Sergey) const [age, setAge, removeAge] useLocalStorage(age, 26)第一个参数是存储的 key相当于给数据起的名字第二个是默认值——当存储里没有这条数据比如第一次访问时使用。默认值甚至支持传函数做惰性初始化。第三步刷新页面验证效果界面上点击 Set Name 把名字改成 John再按 F5 刷新——你会发现存在localStorage里的age原样保留存在sessionStorage里的name只要标签页没关就还在。状态不再刷新即失忆这就是useStorage的价值。 该选 localStorage 还是 sessionStorage简单记一个原则看数据的保质期。选useLocalStorage长期记忆用户主题偏好、语言设置、购物车草稿、登录信息……这些希望下次再来也还在的数据。选useSessionStorage短期记忆多步表单的中间进度、搜索历史、本次会话记住即可的临时状态。关标签页自动清空天然不留垃圾数据。项目中的暗色模式钩子就是教科书级的实战案例src/hooks/useDarkMode/useDarkMode.js用useLocalStorage持久化用户的深色/浅色选择配合useMediaQuery读取系统偏好用户切换一次主题以后每次打开网站都自动生效。 它是怎么做到自动同步的理解原理能让你用得更放心useStorage内部只用了三个 React 内置能力惰性初始化组件首次渲染时从存储里读数据没有就用默认值useEffect 自动写入只要值变化就自动setItem序列化后写回存储值被设为undefined时会自动删除对应 keyuseCallback 提供稳定的 remove点击移除按钮即可清空这条数据。整个过程无需你手写任何getItem/setItem代码也不会因为忘记同步导致界面显示的和存储里的不一致。 三个高频实战场景场景推荐写法设置面板持久化useLocalStorage(settings, {...})存对象退出登录清空数据调用remove函数一键清除用户数据表单草稿自动保存每次输入更新setValue用户误关页面也不丢❓ 新手常见问题Q默认值什么时候生效只有存储里不存在该 key或已被remove删除时才会用默认值之后都以存储为准。Q存复杂对象会出错吗不会钩子内部统一走JSON.stringify/JSON.parse对象和数组都能直接存。Qkey 可以重复吗不同组件可以用同一个 key 共享同一条数据也可以为不同状态用不同 key 互相隔离灵活度完全在你。✅ 小结react-custom-hooks的useStorage用不足 40 行代码见 useStorage.js解决了 React 状态持久化中最常见的痛点✅ 两行代码打通 React 状态与 localStorage / sessionStorage✅ 自动 JSON 序列化对象数组随便存✅ 内置remove清理数据只需一次调用。把它加入你的 React 工具箱从此告别刷新丢状态的尴尬体验。【免费下载链接】react-custom-hooksReact Custom Hooks S.Leschev: useArray useAsync useClickOutside useCookie useCopyToClipboard useDarkMode useDebounce useDebugInformation useDeepCompareEffect useEffectOnce useEventListener useFetch useGeolocation useHover useLongPress useMediaQuery useOnlineStatus useOnScreen usePrevious useRenderCount useScript etc.项目地址: https://gitcode.com/gh_mirrors/re/react-custom-hooks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI法律助手本地化部署与测试指南:从原理到实践

AI法律助手本地化部署与测试指南:从原理到实践

2026/8/23 12:12:43

这次我们来看一个由 Perplexity CEO 亲自推广的邮件版 AI 律师助手。它不是要取代真正的律师,而是作为一个强大的辅助工具,帮助用户快速处理日常法律文书、邮件沟通和合同审查等任务。对于需要频繁处理英文法律邮件、但又不愿为每件小事都咨询律师的个人…

像专业开发者一样迭代Ansible角色:ansible-role-proxmox的Vagrant测试环境与贡献指南

像专业开发者一样迭代Ansible角色:ansible-role-proxmox的Vagrant测试环境与贡献指南

2026/8/23 12:12:43

像专业开发者一样迭代Ansible角色:ansible-role-proxmox的Vagrant测试环境与贡献指南 【免费下载链接】ansible-role-proxmox IaC for Proxmox VE clusters. 项目地址: https://gitcode.com/gh_mirrors/an/ansible-role-proxmox 本文带你搭建 ansible-role-p…

从零开始:低成本云服务器安全配置与生产环境部署全流程

从零开始:低成本云服务器安全配置与生产环境部署全流程

2026/8/23 12:12:43

在实际项目开发和运维中,服务器是承载应用、存储数据、提供服务的基础设施。无论是个人开发者搭建学习环境、测试项目,还是中小企业部署生产应用,选择一台稳定、性价比高的云服务器都是首要任务。近期,市场上出现了针对新用户的超…

一条查询画出 ER 图:ChartDB 数据库可视化全解

一条查询画出 ER 图:ChartDB 数据库可视化全解

2026/8/23 14:13:04

一条查询画出 ER 图:ChartDB 数据库可视化全解 【免费下载链接】chartdb Database diagrams editor that allows you to visualize and design your DB with a single query. 项目地址: https://gitcode.com/GitHub_Trending/ch/chartdb 接手新项目&#xff…

rPPG-Toolbox 实战:用摄像头测心率,三步跑通远程生理监测

rPPG-Toolbox 实战:用摄像头测心率,三步跑通远程生理监测

2026/8/23 14:13:04

rPPG-Toolbox 实战:用摄像头测心率,三步跑通远程生理监测 【免费下载链接】rPPG-Toolbox rPPG-Toolbox: Deep Remote PPG Toolbox (NeurIPS 2023) 项目地址: https://gitcode.com/gh_mirrors/rp/rPPG-Toolbox 晚上十点,你只想看一眼老…

长视频先读 3 页摘要:BiliTools AI 视频总结使用指南

长视频先读 3 页摘要:BiliTools AI 视频总结使用指南

2026/8/23 14:13:04

长视频先读 3 页摘要:BiliTools AI 视频总结使用指南 【免费下载链接】BiliTools 本项目已停止维护。 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 那期 2 小时的 Python 教程,你拖到进度条一半就关掉了。BiliTools 的 AI 视…

5分钟上手Stable Diffusion X4 Upscaler:从零搭建AI 4倍图像超分辨率环境的快速开始教程

5分钟上手Stable Diffusion X4 Upscaler:从零搭建AI 4倍图像超分辨率环境的快速开始教程

2026/8/23 14:13:04

5分钟上手Stable Diffusion X4 Upscaler:从零搭建AI 4倍图像超分辨率环境的快速开始教程 【免费下载链接】stable-diffusion-x4-upscaler 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/stable-diffusion-x4-upscaler Stable Diffusion X4 Upsca…

Obsidian 中文社区:中文问 Obsidian 的 3 个入口

Obsidian 中文社区:中文问 Obsidian 的 3 个入口

2026/8/23 14:13:04

Obsidian 中文社区:中文问 Obsidian 的 3 个入口 【免费下载链接】forum Obsidian中文社区 项目地址: https://gitcode.com/gh_mirrors/forum69/forum Obsidian 中文社区是由国内用户自建的 Obsidian 中文论坛,直接架在 GitHub Discussions 上。插…

Qwen3.6-27B-AWQ-INT4:把 27B 模型权重显存压到约 1/4 的量化方案

Qwen3.6-27B-AWQ-INT4:把 27B 模型权重显存压到约 1/4 的量化方案

2026/8/23 14:03:04

Qwen3.6-27B-AWQ-INT4:把 27B 模型权重显存压到约 1/4 的量化方案 【免费下载链接】Qwen3.6-27B-AWQ-INT4 项目地址: https://ai.gitcode.com/hf_mirrors/cyankiwi/Qwen3.6-27B-AWQ-INT4 Qwen3.6-27B-AWQ-INT4 是 Qwen3.6-27B 的 INT4 量化版:用…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…