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

网站如何加入流量统计燃气行业网站建设方案

网站如何加入流量统计,燃气行业网站建设方案,桌面上链接网站怎么做,dw个人主页制作模板在 React 中,性能优化是一个重要的主题,特别是在复杂的组件树中。本文将演示如何在同一个父组件中使用 useMemo 和 React.memo 来优化子组件的渲染。 1. 组件结构 创建一个父组件,包含两个子组件: MemoChild:使用 R…

在 React 中,性能优化是一个重要的主题,特别是在复杂的组件树中。本文将演示如何在同一个父组件中使用 useMemoReact.memo 来优化子组件的渲染。

1. 组件结构

创建一个父组件,包含两个子组件:

  • MemoChild:使用 React.memo 进行优化。
  • ExpensiveChild:使用 useMemo 缓存。

示例:

import React, { useState, useMemo } from 'react';// 子组件,使用 React.memo
const MemoChild = React.memo(({ data }) => {console.log('MemoChild rendered');return <div>{data}</div>;
});// 子组件,使用 useMemo 缓存
const ExpensiveChild = ({ data }) => {console.log('ExpensiveChild rendered');return <div>{data}</div>;
};// 父组件
function Parent() {const [count, setCount] = useState(0);const [data, setData] = useState('Initial Data');// 使用 useMemo 来缓存 ExpensiveChildconst memoizedExpensiveChild = useMemo(() => {console.log('Calculating ExpensiveChild');return <ExpensiveChild data={data} />;}, [data]);return (<div><h1>Parent Component</h1><MemoChild data={`Count: ${count}`} />{memoizedExpensiveChild}<button onClick={() => setCount(count + 1)}>Increment Count</button><button onClick={() => setData('New Data')}>Update Data</button></div>);
}export default Parent;

2. 组件功能解析

MemoChild

  • 使用 React.memo 包裹,只有当其 data 属性变化时才会重新渲染。

ExpensiveChild

  • 普通的子组件,父组件使用 useMemo 来缓存其实例。
  • 只有当 data 属性变化时,useMemo 会重新计算并返回新的组件实例。

Parent

  • 管理两个状态:countdata
  • 点击“Increment Count”按钮时,只有 MemoChild 会更新,而 ExpensiveChild 的引用保持不变。
  • 点击“Update Data”按钮时,ExpensiveChild 会重新渲染,因为 data 发生了变化。

3. 运行结果

点击“Increment Count”按钮

  • count 状态更新,MemoChild 会重新渲染,控制台输出:
    MemoChild rendered
    
  • ExpensiveChild 不会重新渲染,控制台不会输出。

点击“Update Data”按钮

  • data 状态更新,ExpensiveChild 会重新渲染,控制台输出:
    Calculating ExpensiveChild
    ExpensiveChild rendered
    

4. useMemoReact.memo 对比:

useMemo

  • Hook钩子函数,用于缓存计算结果。只有当依赖项变化时,才会重新计算。
  • 使用useMemo 缓存 ExpensiveChild 实例,避免不必要的重新渲染。

React.memo

  • 高阶组件,缓存组件的渲染结果。只有当传入的 props 发生变化时,组件才会重新渲染。
  • 适用于根据 props 变化控制渲染的场景。

5. 渲染逻辑总结

基本数据类型(如 numberstringboolean

  • 当组件的 props 是基本数据类型时,如果其值未发生变化,React.memo 不会重新渲染组件。

引用数据类型(如 objectarray

  • 当组件的 props 是引用数据类型时,React.memo 会进行浅比较。
  • 如果引用相同,组件不会重新渲染;如果引用不同,组件会重新渲染。

6. 关键点

  • 基本数据类型的比较:只要值相同,组件不会重新渲染。
  • 引用数据类型的比较:如果引用相同,组件不会重新渲染;如果引用不同(无论内容是否相同),组件会重新渲染。
http://www.yayakq.cn/news/197624/

相关文章:

  • 电子公司网站设计网站读取速度慢
  • 网络营销做得比较成功的案例防疫措施优化
  • 建设专业网站平台电子商务网站建设与管理第二版
  • 太平洋保险网站云梦做网站
  • 河南省网站集约化建设深圳做营销网站设计
  • 做网站备案要处省的电话号码义乌网站公司
  • 济南卓远网站建设公司2022年网站能用的
  • 大型网站建设制作平台做视频网站需要什么空间
  • 网站建设的职责中国做网站的公司有哪些
  • 5千ip的网站能赚多少钱从网址怎么看网站的域名
  • 宣传类的网站有哪些内容网站站内关键词优化
  • 台州网站建设方案服务网站开发设计培训
  • 网站 权重做旅游门票网站需要什么材料
  • 烟台网站建设科技运营笔记 wordpress
  • 个人网站效果图咋做logo免费制作
  • dw可以做有后台的网站么?网站seo数据分析
  • 网站标题改不了做网站的图片素材
  • 单页面制作搜索引擎优化的具体措施
  • 网站更新要怎么做网站系统繁忙是什么意思
  • 怎么能查到网站是哪家公司做的怎样做个做外贸的网站
  • 漂亮的网站是什么建设出来的公司设计图片大全
  • 东莞网站建设网页推广做html网站搜索框教程
  • c 语言能开发做网站吗中信建设有限责任公司龙芳
  • 企业网站未来发展趋势游戏开发需要具备哪些技术
  • 官方网站建设教程企业网站前端模板
  • 国外网站dns在线解析全国企业信用信息查询系统官网
  • 福建省建设职业管理中心网站做百度推广送网站
  • 在哪些网站能接到活做绿茶直播
  • 网站优化潍坊校园网站建设经费申请报告
  • 设计一个手机网站平面多少钱深圳和胜建设公司