React性能优化

概念

性能优化是指通过减少不必要的渲染或计算来提高应用的性能。React 提供了 React.memouseCallbackuseMemo 等工具来优化性能。

用法

  • React.memo:缓存函数组件,避免在 Props 没有变化时重新渲染。
  • useCallback:缓存回调函数,避免在每次渲染时重新创建。
  • useMemo:缓存计算结果,避免在依赖项没有变化时重新计算。

使用场景

  • React.memo:当父组件重新渲染时,子组件不需要重新渲染。
  • useCallback:当回调函数作为 Props 传递给子组件时。
  • useMemo:当计算结果依赖复杂逻辑或大量数据时。

代码示例

javascript 复制代码
// 1. 使用 React.memo 缓存组件
const ExpensiveComponent = React.memo(function({ value }) {
  console.log('ExpensiveComponent rendered');
  return <div>Value: {value}</div>;
});

function ParentComponent() {
  const [count, setCount] = React.useState(0);
  const [value, setValue] = React.useState(10);

  // 2. 使用 useCallback 缓存回调函数
  const increment = React.useCallback(() => {
    setCount(prev => prev + 1);
  }, []);

  // 3. 使用 useMemo 缓存计算结果
  const doubledValue = React.useMemo(() => {
    console.log('Calculating doubled value');
    return value * 2;
  }, [value]);

  return (
    <div>
      <button onClick={increment}>Increment Count: {count}</button>
      <button onClick={() => setValue(prev => prev + 5)}>Change Value: {value}</button>
      <div>Doubled Value: {doubledValue}</div>
      <ExpensiveComponent value={doubledValue} />
    </div>
  );
}

代码解析

  • React.memoExpensiveComponent 只会在 value 变化时重新渲染。
  • useCallbackincrement 函数在组件渲染时不会重新创建。
  • useMemodoubledValue 只会在 value 变化时重新计算。
相关推荐
codeGoogle5 小时前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
zzzzzz3106 小时前
从 react-bits 看动效组件化:别把视觉效果写成一次性页面代码
javascript·react.js·开源
用户938515635076 小时前
React Context 与自定义 Hook 从底层到实践:「跨层级通信 + 副作用封装」全解析
前端·javascript·react.js
滴滴答答哒6 小时前
VUE3+element-plus MultiSelect 多选下拉组件
前端·javascript·vue.js
其美杰布-富贵-李7 小时前
04 watch 与 Vue 响应式数据流
前端·javascript·vue.js
赵大仁8 小时前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
kyriewen9 小时前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒9 小时前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李10 小时前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区10 小时前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程