当前位置:首页 > React

react闭包实现缓存

2026-01-27 12:40:44React

使用闭包实现缓存的原理

在React中利用闭包特性可以实现缓存功能,核心思想是通过函数作用域保留变量状态。闭包能让函数访问其定义时的词法环境,即使函数在其他地方执行。

基础闭包缓存实现

function createCache() {
  const cache = {};

  return function(key, value) {
    if (value !== undefined) {
      cache[key] = value; // 设置缓存
    }
    return cache[key]; // 获取缓存
  };
}

const cache = createCache();
cache('name', 'Alice'); // 设置
console.log(cache('name')); // 获取

React组件中的缓存优化

在函数组件中使用useMemo和useCallback结合闭包:

import React, { useMemo, useCallback } from 'react';

function ExpensiveComponent({ data }) {
  const memoizedData = useMemo(() => {
    const cache = {};
    return (key) => {
      if (!cache[key]) {
        console.log('计算新值');
        cache[key] = expensiveCalculation(data, key);
      }
      return cache[key];
    };
  }, [data]);

  return <div>{memoizedData('someKey')}</div>;
}

自定义Hook实现

创建可复用的缓存Hook:

function useCache() {
  const cacheRef = React.useRef(new Map());

  const getCache = useCallback((key) => {
    return cacheRef.current.get(key);
  }, []);

  const setCache = useCallback((key, value) => {
    cacheRef.current.set(key, value);
  }, []);

  return { getCache, setCache };
}

// 使用示例
function MyComponent() {
  const { getCache, setCache } = useCache();
  // ...
}

带过期时间的缓存

扩展基础缓存实现自动清理:

react闭包实现缓存

function createTimedCache(ttl) {
  const cache = {};

  return function(key, value) {
    const now = Date.now();
    if (value !== undefined) {
      cache[key] = { value, expires: now + ttl };
    }

    const entry = cache[key];
    if (entry && entry.expires > now) {
      return entry.value;
    }
    delete cache[key];
    return undefined;
  };
}

性能优化建议

缓存实现应考虑内存管理,避免无限增长。在React中建议结合useRef保持缓存引用稳定,同时利用useMemo/useCallback避免不必要的重新计算。对于复杂场景可以考虑使用成熟的缓存库如lru-cache。

标签: 缓存react
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…

react如何进阶

react如何进阶

React 进阶学习路径 深入理解 React 核心机制 学习 React Fiber 架构、协调算法(Reconciliation)和虚拟 DOM 的工作原理。掌握 React 的渲染流程,包括组件…

react如何接收数据

react如何接收数据

React 接收数据的方法 React 中接收数据的方式有多种,根据数据来源和场景的不同,可以选择适合的方法。以下是常见的几种方式: Props 传递数据 父组件通过 props 向子组件传递数据,…