96SEO 2026-07-02 15:12 4
嘿,兄弟,今天咱们聊聊 React 的两大缓存神器——useMemo 和 useCallback。 你有没有想过它们到底是啥?它们到底该咋用?别急,我这边一会儿给你讲清楚。
先说说用什么场景Neng用到它们React 的函数式组件每次渲染dou会跑一遍所有代码。 Ru果你在 render 时Zuo了大量计算或者写了hen多回调函数, 那就会导致性Neng吃紧。

于是 React 给我们提供了两个 Hook:useMemo 用来缓存值, useCallback 用来缓存函数。
useMemo 是干嘛的?简单说它帮你把一个耗时计算的结果存起来 只要依赖没变就直接拿老值,不再重新算。
const total = useMemo => {
// 假装这一步hen慢
return price * count;
}, );
上面这段代码里Ru果 price 或者 count 没变, 下次渲染时就不会 执行乘法,而是直接返回上一次的 total。
useCallback 是干嘛的?它跟 useMemo hen像,只不过返回的是一个函数对象。 当依赖没变时你得到的就是同一个函数引用。
const handleClick = useCallback => {
console.log;
}, );
这样子,传给子组件的 onClick 就不会因为父组件重新渲染而“换新”—— 子组件Neng通过 React.memo 判断 props 是否真的改变,从而跳过一次渲染。
差异大揭秘:缓存的是值还是函数?这就是Zui核心的区别:
useMemo 缓存的是“值”——你在回调里手动返回的东西;
useCallback 缓存的是“函数”本身——返回的是一个闭包;
举个例子:
// 想缓存一个计算好的对象
const obj = useMemo => }), );
// 想缓存一个事件处理器
const fn = useCallback => doSomething, );
Ru果你把两者搞混,会导致性Neng问题甚至 bug。例如把需要多次调用的大数计算放在普通回调里 每次渲染dou会重新跑一遍,这可不是我们想要的。
我记得一句话:不要把无意义的东西dou放进 memo!"小东西不用管,大事才记住"
为什么百度不收录这个文章?"哈哈,我也不知道啊,那可Neng是因为内容太短、关键词不到位、或者是算法觉得这篇文章对搜索用户价值太低。" 说实话,有时候爬虫根本不会抓取到我们的博客,尤其是在没有足够外链或流量的时候。 所以Ru果你想让百度索引你的技术博客,一定要有足够质量的内容和外部链接。毕竟算法会优先抓取被广泛引用和高质量的页面。
什么时候用哪个geng合适?"咱就是说当你需要在 render 中Zuo复杂计算,而且这些计算只跟几个状态有关,就用 useMemo。"
"而当你有一个回调传给子组件,而且这个子组件使用了 React.memo 或者依赖于 props 的引用比较性时就用 useCallback 来避免无意义重渲染。"
"记住一句话:不要为了优化而优化,只要真的有性Neng瓶颈,再去考虑是否使用它们。"
"比如 filter 列表、排序、分页这些常见操作往往Yi经被内部Zuo了hen好的优化,你Ke以先跑跑kan性Neng再决定是否加 memo。"
"另外Ru果你的回调hen简单,那么加 callback 并不Neng提升性Neng,也没有必要。"
"情况 A:props 改变时子组件不需要重新渲染 → 用 callback 保持同一引用;"
"情况 B:仅需缓存一次性结果 → 用 memo 返回值;"
"情况 C:同时又想保持函数引用与某些状态同步 → 两个一起用!"
示例:Child 接收 memoized 回调避免重渲染function Parent {
const = React.useState;
const handleIncrement = useCallback => setCount, );
return (
计数:{count}
);
}
const Child = React.memo => {
console.log;
return ;
});
Vue 与 React 的区别简述一下
"Vue 有 computed 属性,它相当于 react 的 memo 化值;"
"Vue 的 watch Ke以监听变化并执行逻辑,但不像 callback 那样专门为传递给子组件Zuo防抖;"
"React geng强调纯粹的数据驱动与 Hooks,让我们Ke以灵活组合这些记忆化工具。";
";"
"Ru果你从 Vue 转来用 react.memo 就好比 vue.extend 的 pureComponent;";
";"
“;
";"
... ;
{computedProp && }
面试官常问
“请解释一下 useMemo 和 useCallback 的区别。”
答:“前者缓存值后直接返回,不重复运算;后者缓存函数引用,使得 prop 不变时不触发子组件geng新。”
“什么时候不用 memo 或 callback?”
答:“Ru果你的数据变化频繁且真实需要geng新 UI,那么强行 memo 会浪费 CPU;Ru果没有真正导致多余重渲染,那也没必要。”
记住useMemo 缓存值;useCallback 缓存函数。
不要盲目只有在出现明显性Neng瓶颈或多余重渲染时才使用。
Zui后一句话:别把自己逼得太紧,先写出Neng跑通的代码,再逐步优化。Ru果遇到卡顿,就kan是不是多次执行了同样计算,然后考虑加 memo 或 callback。祝编码愉快,兄弟!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback