前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支持过期时间的localStorage React Hook

支持过期时间的localStorage React Hook

作者头像
不作声
发布2021-03-23 11:34:20
7580
发布2021-03-23 11:34:20
举报
文章被收录于专栏:M不作声M不作声

最近自己造了一个轮子,支持过期时间的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
复制
const [item, setItem] = useLocalStorage(key, { initialValue, prefix, age });

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

代码语言:javascript
复制
{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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档