在react中如何计算本地存储体积

1.定义useLocalStorageSize钩子函数

javascript 复制代码
// 计算localStorage大小
function useLocalStorageSize() {
  const [size, setSize] = useState(0);
  useEffect(() => {
    const calculateSize = () => {
      let totalSize = 0;
      for (let key in localStorage) {
        //过滤掉继承自原型链的属性
        if (localStorage.hasOwnProperty(key)) {
          // 计算key和value的大小
          let keySize = new Blob([key]).size;
          let valueSize = new Blob([localStorage[key]]).size;
          totalSize += keySize + valueSize;
        }
      }
      setSize(totalSize);
    };
    // 初始计算一次大小
    calculateSize();
    //当 localStorage发生变化时,重新计算大小
    window.addEventListener("storage", calculateSize);
    // 当组件卸载时,移除事件监听
    return () => {
      window.removeEventListener("storage", calculateSize);
    };
  }, []);

  return size;
}

2.默认导出

javascript 复制代码
export default useLocalStorageSize;

3.在需要的组件中引入

javascript 复制代码
import useLocalStorageSize from "./Encapsulation/useLocal";

4.设置单位

javascript 复制代码
//设置单位
  function formatSizeUnits(bytes: any) {
    if (bytes >= 1073741824) {
      return (bytes / 1073741824).toFixed(2) + " GB";
    } else if (bytes >= 1048576) {
      return (bytes / 1048576).toFixed(2) + " MB";
    } else if (bytes >= 1024) {
      return (bytes / 1024).toFixed(2) + " KB";
    } else if (bytes > 1) {
      return (bytes / 1024).toFixed(2) + " KB";
    } else if (bytes === 1) {
      return bytes + " byte";
    } else {
      return "0 bytes";
    }
  }

5.使用

javascript 复制代码
  const size = useLocalStorageSize();
  const formattedSize = formatSizeUnits(size);

6.效果

相关推荐
金木讲编程2 分钟前
Claude、Agent与Copilot协作生成Angular应用
前端·ai编程
怪兽201429 分钟前
fastjson在kotlin不使用kotlin-reflect库怎么使用?
android·开发语言·kotlin
ClearLiang29 分钟前
Kotlin-协程的挂起与恢复
开发语言·kotlin
彭同学学习日志34 分钟前
Kotlin Fragment 按钮跳转报错解决:Unresolved reference ‘floatingActionButton‘
android·开发语言·kotlin
振华OPPO38 分钟前
Vue:“onMounted“ is defined but never used no-unused-vars
前端·javascript·css·vue.js·前端框架
海域云赵从友39 分钟前
破解跨境数据传输瓶颈:中国德国高速跨境组网专线与本地化 IP 的协同策略
开发语言·php
咚咚王者44 分钟前
人工智能之编程进阶 Python高级:第九章 爬虫类模块
开发语言·python
欧雷殿1 小时前
在富阳银湖成立地域化的软件研发团队
前端·程序员·创业
深蓝海拓1 小时前
使matplot显示支持中文和负号
开发语言·python
狂炫冰美式2 小时前
前端实时推送 & WebSocket 面试题(2026版)
前端·http·面试