Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >支持过期时间的localStorage React Hook

支持过期时间的localStorage React Hook

作者头像
不作声
发布于 2021-03-23 03:34:20
发布于 2021-03-23 03:34:20
84600
代码可运行
举报
文章被收录于专栏:M不作声M不作声
运行总次数:0
代码可运行

最近自己造了一个轮子,支持过期时间的localStorage React Hook。

这次使用「tsdx」构建项目,tsdx是一个用于ts开发的零配置命令行工具,构建时自动添加打包工具、测试、storybook、Example等,节省了很多安装包的命令。

localStorage只有getItem, setItem, removeItem(), clear()4个API,本身并不支持过期时间,但我们可以添加这个功能并封装成React Hook函数。

实现思路如下:

  • 将Item的值和过期时间作为一个对象,使用JSON.stringify()处理
  • 调用setItem(),将值和过期时间一起存入
  • 调用getItem(),用JSON.parse()处理取出过期时间,与当前时间判断
  • 如果过期调用removeItem()删除缓存,如果没过期就获取Item的值

最后打包发布到npm。

使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [item, setItem] = useLocalStorage(key, { initialValue, prefix, age });

age就是设置的过期时间,使用ms库处理后存入到localStorage,每次访问该缓存时都会判断是否过期。age可以取这些值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{age: '2 days'}  // 172800000
{age: '1d'}      // 86400000
{age: '10h'}     // 36000000
{age: '2.5 hrs'} // 9000000
{age: '2h'}      // 7200000
{age: '1m'}      // 60000
{age: '5s'}      // 5000
{age: '1y'}      // 31557600000
{age: '100'}     // 100

另外,为了防止覆盖之前的缓存,默认会为Item的key前边添加一个前缀Prefix:,也可以自己添加别的前缀。

npm信息

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端合集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
给localStorage添加过期时间的功能
JokerDJ
2023/11/27
2320
🔔叮~,你有几个系统级交互的React hooks待查收
最近摸鱼时间自己手动实现了几个系统级交互的hooks,由简单到复杂,依次分享给大家!
萌萌哒草头将军
2023/05/26
5880
🔔叮~,你有几个系统级交互的React hooks待查收
H5-locaStorage解析
我们先说说localStorage是做什么用的 用来存取数据,是一种缓存结构,说到缓存我们之前不是有cookie了吗,为什么还要用localStorage? 我们从下面的例子来看看把
envoke
2020/09/17
5440
H5-locaStorage解析
运用惰性删除和定时删除实现可过期的localStorage缓存
使用localStorage可以在浏览器中存储键值对的数据。经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数据。但是它们之间的区别是:存储在localStorage的数据可以长期保留;而当页面会话结束(也就是当页面被关闭)时,存储在sessionStorage的数据会被清除。
万猫学社
2022/04/22
1.4K0
基于 localStorage 实现一个具有过期时间的 DAO 库
我们将基于localStorage原始api进行扩展,让其支持失效时间,操作完成后的回调。在文章的最后,我将给出库的完成代码,接下来我们就一步步实现吧。
徐小夕
2019/08/09
9770
基于 localStorage 实现一个具有过期时间的 DAO 库
如何封装 cookie/localStorage/sessionStorage hook?
本文是深入浅出 ahooks 源码系列文章的第九篇,这个系列的目标主要有以下几点:
GopalFeng
2022/08/01
1.2K0
一文总结JavaScript手写面试题
该方法的参数是 Promise 实例数组, 然后其 then 注册的回调方法是数组中的某一个 Promise 的状态变为 fulfilled 的时候就执行. 因为 Promise 的状态只能改变一次, 那么我们只需要把 Promise.race 中产生的 Promise 对象的 resolve 方法, 注入到数组中的每一个 Promise 实例中的回调函数中即可.
helloworld1024
2022/11/07
3880
JavaScript LocalStorage 完整指南
对于大多数 web 浏览器,web 存储 API 提供了在浏览器中存储键值对的机制。它通常分为 localStorage 和 sessionStorage,两者之间的主要区别是浏览器存储数据的时间。使用 sessionStorage,「一旦会话结束或浏览器关闭,数据就会被删除」。但是,localStorage 中的数据会一直保存到清除为止。
用户8921923
2022/10/24
2.5K0
localStorage简单封装设置失效时间
localStorage和cookie 的区别不详细对比,但是localStorage存储数据的时候有一点需要我们注意的。
日薪月亿
2019/05/14
2K0
通过8个常用hook手把手教你封装hooks
对于使用 react 的同学来说,hook 一定不陌生,但是如何封装 hook 以及在业务中怎么使用封装的 hook,很多同学并没有一个很好的实践,这篇文章就通过10个常用的 hook 让大家学会封装 hook,能够在自己的业务中使用,提高复用率,减少开发成本
FE情报局
2023/01/31
2.3K0
通过8个常用hook手把手教你封装hooks
百度前端一面常见手写面试题(持续更新中)
方法有很多种,这里提供一种比较简洁的写法,用到了ES10的Object.fromEntries():
helloworld1024
2022/09/24
4330
LocalStorage 设置过期时间?
以上问题都是日常开发中遇到的,所以有此记录,如果你有不同的解决方案,欢迎留言告诉哦,不同的思路带来不同的碰撞,哈哈。
执行上下文
2022/07/26
3.4K0
LocalStorage 设置过期时间?
项目实战|缓存处理
在之前的博客中,我们使用过工厂、代理模式来封装原生的缓存方法,这一篇我们将缓存方法的细节处理优化一下,来提高项目质量
Cookieboty
2020/10/23
4820
JavaScript常见手写题熬夜整理
题目描述:有一组版本号如下 ['0.1.1', '2.3.3', '0.302.1', '4.2', '4.3.5', '4.3.4.5']。现在需要对其进行排序,排序的结果为 ['4.3.5','4.3.4.5','2.3.3','0.302.1','0.1.1']
helloworld1024
2022/09/22
9160
SessionStorage、LocalStorage详解
作为Web开发人员,在 Web浏览器中存储数据以改善用户体验和提升Web应用程序性能是非常常见的。在大多数情况下,可供我们使用就是LocalStorage和SessionStorage。
葡萄城控件
2020/10/26
1.6K0
浏览器常见面试题及答案实操续篇之深度解析与典型题型汇总
图片懒加载是前端性能优化的重要手段,以下是一个基于Intersection Observer API的懒加载组件封装实现:
小焱
2025/06/16
990
浏览器常见面试题及答案实操续篇之深度解析与典型题型汇总
基于vue2.0+vuex+localStorage开发的本地记事本
本文采用vue2.0+vuex+localStorage+sass+webpack,实现一个本地存储的记事本。兼容PC端和移动端。 在线预览地址:DEMO 功能说明 支持回车添加事件 支持事件状态切换
IMWeb前端团队
2017/12/29
1.2K0
js手写面试题总结
使用时间戳的节流函数会在第一次触发事件时立即执行,以后每过 wait 秒之后才执行一次,并且最后一次触发事件不会被执行
helloworld1024
2022/12/16
6540
你应该会喜欢的5个自定义 Hook
最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。
前端小智@大迁世界
2021/03/02
8.3K0
面试官: 如何让localStorage支持过期时间设置?
聊到 localStorage 想必熟悉前端的朋友都不会陌生, 我们可以使用它提供的 getItem, setItem, removeItem, clear 这几个 API 轻松的对存储在浏览器本地的数据进行读,写, 删操作, 但是相比于 cookie, localStorage 唯一美中不足的就是不能设置每一个键的过期时间。
徐小夕
2021/12/13
5.6K0
面试官: 如何让localStorage支持过期时间设置?
相关推荐
给localStorage添加过期时间的功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验