当前位置: 首页 > news >正文

网站建设销售顾问开场白wordpress版微信小程序

网站建设销售顾问开场白,wordpress版微信小程序,如何注册公司支付宝账户,北京短视频代运营一、核心概念解析API类型作用返回值useCallbackReact Hook缓存函数引用记忆化的函数useMemoReact Hook缓存计算结果记忆化的值React.memo高阶组件(HOC)缓存组件渲染结果优化后的组件二、详细说明与代码示例 1、useCallback: 缓存函数引用 con…

一、核心概念解析

API类型作用返回值
useCallbackReact Hook缓存函数引用记忆化的函数
useMemoReact Hook缓存计算结果记忆化的值
React.memo高阶组件(HOC)缓存组件渲染结果优化后的组件

二、详细说明与代码示例

1、useCallback: 缓存函数引用

const memoizedFn = useCallback(() => {// 函数逻辑
}, [dependencies]);
  • 解决的问题: 防止函数引用频繁变化导致子组件无效重渲染
  • 典型场景:
    • 函数作为 props 传递给优化过的子组件(React.memo
    • 函数作为其他 Hook 的依赖项(如useEffect
// 父组件
function Parent() {const [count, setCount] = useState(0);// ✅ 缓存函数引用const increment = useCallback(() => setCount(c => c + 1), []);return <Child onIncrement={increment} />;
}// 子组件(使用 React.memo 优化)
const Child = React.memo(({ onIncrement }) => {console.log('子组件渲染');return <button onClick={onIncrement}>+</button>;
});

2、useMemo:缓存计算结果

const memoizedValue = useMemo(() => {// 复杂计算return computeExpensiveValue(a, b);
}, [a, b]);
  • 解决的问题: 避免重复执行昂贵的计算
  • 典型场景:
    • 复杂计算(如数据转换、筛选)
    • 保持对象/数组引用稳定(避免作为props传递时触发重渲染)
function Component({ items }) {// ✅ 缓存计算结果const filteredItems = useMemo(() => {return items.filter(item => item.value > 100);}, [items]);return <List items={filteredItems} />;
}

React.memo: 缓存组件渲染

const MemoizedComponent = React.memo(Component, arePropsEqual?);
  • 解决的问题: 避免父组件更新导致子组件不必要的重渲染
  • 工作方式:
    • 对props进行浅比较(可自定义比较函数)
    • props未变化时复用上次渲染结果
// 基础用法
const UserCard = React.memo(({ user }) => {return <div>{user.name}</div>;
});// 自定义比较函数
const UserCard = React.memo(({ user }) => {...},(prevProps, nextProps) => prevProps.user.id === nextProps.user.id
);

三、三者区别对比

特性useCallbackuseMemoReact.memo
优化目标函数引用计算结果组件渲染
返回内容函数任何值组件
触发条件依赖变化时重建函数依赖变化时重新计算props变化时重渲染
内存开销缓存函数缓存值缓存虚拟DOM
典型使用位置组件内部组件内部组件导出时
性能影响减少子组件重渲染减少计算开销减少DOM操作

四、协同工作示例

import React, {useState, useCallback, useMemo} from 'react';// 使用React.memo优化的子组件
const Chart = React.memo((data, onClick) => {console.log('渲染');return <svg onClick={onClick}>...</svg>;
})function Dashboard() {const [data, setData] = useState([]);const [filter, setFilter] = useState('month');// ✅ 缓存函数引用const handleClick = useCallback(() => {console.log('图表点击');}, []);//✅ 缓存计算结果const filteredData = useMemo(() => {return data.filter(d => d.period === filter);}, [data, filter]);return (<div><Chartdata={filteredData}  // 稳定引用onClick={handleClick}  // 稳定引用/></div>);
}

优化效果:
1、filter变化 → filteredData重新计算 → Chart重渲染
2、父组件状态更新 → handleClick引用不变 → Chart 不重渲染
3、点击图表 → 触发缓存的handleClick

五、使用误区与最佳实践

常见错误:

// ❌ 错误1:缺少依赖项
const badCallback = useCallback(() => {console.log(count);  // 永远输出初始值
}, []);  // 缺少count 依赖// ❌ 错误2:滥用useMemo
const simpleValue = useMemo(() => 42, []);  // 直接使用 const 更高效// ❌ 错误3:期待 React.memo 深比较
React.memo(Comonent);  // 默认只做浅比较

黄金法则:
1、按需优化: 先用常规写法,出现性能问题再优化
2、组合使用:
- React.memo + useCallback 优化组件树
- useMemo + useCallback 稳定复杂依赖
3、依赖诚实: 始终声明所有依赖项
4、避免深比较: 复杂对象考虑使用ID比对而非完整对象

六、性能影响分析

操作内存开销CPU开销适用场景
使用useCallback缓存函数依赖比较函数传递/依赖项稳定化
使用useMemo缓存值依赖比较 + 计算昂贵计算/引用稳定化
使用React.memo缓存VDOMProps比较重渲染成本高的叶子组件
三者组合较高大型组件/频繁更新场景
不使用优化简单组件/无性能瓶颈

经验总结: 在10%需要优化的关键路径上使用这些API,避免在简单组件中过度优化。

http://www.dtcms.com/a/526992.html

相关文章:

  • 网站建设后如何修改北京做网站好的
  • 网站做的长图能导出吗蚌埠建设银行网站
  • 笑话网站模版太原建站一条龙
  • 网站开发电脑内存要多少电商 网站 备案
  • 网站开发是什么语言手机网站定制
  • 现在有没有免费的网站如何在百度提交网站
  • 建一个网站多少钱?广州公共资源交易中心交易平台
  • 南沙做网站足球比赛直播雨燕
  • 西安学校网站建设报价楼盘动态
  • wordpress电子商务视频教程网站优化外包价格
  • 产品展示型网站模板wordpress音乐小工具
  • 网站建设费用会计科目湖北强涛建设工程有限公司网站
  • 如何在文本上做网站链接符号网站设计与制作是网页吗
  • 温州网站优化推广方案搜索引擎seo是什么意思
  • 手机网站 seo网站一起做网店
  • wordpress开发工作流怎样做网站优化排名
  • 【硬件基础篇】:认识电流、电压、功率
  • 企业网站开发公司排名广州建设银行招聘网站
  • 区块链的网站怎么做代理网店一件代发
  • 生鲜网站建设的总体目标网络公司经营范围参考
  • 网站开发页面设计诸城网站开发
  • 网站成功案例设计为什么计算机鄙视软工
  • 医疗网站建设计划书wordpress 随机
  • 做网站那里好渭南市工程建设项目审批网上办事大厅
  • 做短链的网站做图片网站编辑标题怎么写能吸引
  • 南京网站优化网站建设公司建设一个小说网站
  • 展示型网站企业网站建设北京中交建设工程咨询有限公司网站
  • 女生做网站开发WordPress 微信小程序登录
  • 运城网站建设公司有多少安装了两个wordpress
  • 吉林市市政建设集团网站给一个公司做网站需要什么内容