当前位置:首页 > React

react闭包实现缓存

2026-01-27 12:40:44React

使用闭包实现缓存的原理

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

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结合闭包:

react闭包实现缓存

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();
  // ...
}

带过期时间的缓存

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

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 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

react 如何操作cookie

react 如何操作cookie

安装依赖 在React项目中操作cookie通常需要第三方库的支持,推荐使用js-cookie。通过npm或yarn安装: npm install js-cookie # 或 yarn add js…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…