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

宁波网站建设优化排名网站宣传的方法有哪些

宁波网站建设优化排名,网站宣传的方法有哪些,零食网站怎么做,长沙网站制作公司怎么做目录 背景优化方案方法一:提取到父组件,分离 Timer 和 OtherSlowComponent方法二:使用 useMemo 缓存慢组件(更适用于传了 props 的场景)方法三:memo方法四:props.children为什么 props.children…

目录

  • 背景
  • 优化方案
    • 方法一:提取到父组件,分离 Timer 和 OtherSlowComponent
    • 方法二:使用 useMemo 缓存慢组件(更适用于传了 props 的场景)
    • 方法三:memo
    • 方法四:props.children
      • 为什么 props.children 能帮助优化
      • 示例:使用 props.children 优化重渲染
      • 渲染优化分析
    • 总结

背景

有如下组件:

const Timer = () => {const [time, setTime] = useState(0); // 每秒更新return (<><h1>当前时间:{dayjs(time).format("YYYY-MM-DD HH:mm:ss")}</h1><OtherSlowComponent /> // 每次 setTime 都会触发整个组件重新渲染,包括这里</>);
};const Container = () => <Timer />;

每秒更新一次 time,导致整个 Timer 组件重新渲染,连带 ·OtherSlowComponent· 也每秒被重新渲染一次,哪怕它跟时间无关!

又或者:

import { memo } from 'react';export const App = () => {const { currentUserInfo, users } = useGetInfoData();return (<div className="App"><CurrentUserInfo data={currentUserInfo} /><UserInfoList users={users} /></div>);
};

假如 currentUserInfo 更新,也会导致 UserInfoList 组件的重新渲染。

优化方案

方法一:提取到父组件,分离 Timer 和 OtherSlowComponent

const Container = () => {return (<><Timer /><OtherSlowComponent /></>);
};

如果 OtherSlowComponentTimer 没有任何依赖关系,直接将它们并列在父组件中是最简单高效的做法,彻底避免无意义的重渲。

方法二:使用 useMemo 缓存慢组件(更适用于传了 props 的场景)

const memoizedSlowComp = useMemo(() => <OtherSlowComponent />, []);

但注意:useMemo 仅在初次渲染创建,依赖项变化时才会重新计算。

方法三:memo

export const App = () => {const { currentUserInfo, users } = useGetInfoData();return (<div className="App"><CurrentUserInfo data={currentUserInfo} /><UserInfoList users={users} /></div>);
};const UserInfoList = memo(({ users }) => {// ...
});

方法四:props.children

为什么 props.children 能帮助优化

如果你把慢组件 OtherSlowComponent 作为 children 传进去,并且 Timer 本身不关心它、也不依赖它的任何状态变化,那就可以很好地“托管”渲染时机 —— 只要父组件不变,它不会重渲!

示例:使用 props.children 优化重渲染

const Container = () => {return (<Timer><OtherSlowComponent /></Timer>);
};const Timer = ({ children }: { children: React.ReactNode }) => {const [time, setTime] = useState(new Date());useEffect(() => {const intervalId = setInterval(() => setTime(new Date()), 1000);return () => clearInterval(intervalId);}, []);return (<><h1>当前时间: {dayjs(time).format("YYYY-MM-DD HH:mm:ss")}</h1>{children}</>);
};const OtherSlowComponent = React.memo(() => {console.log('💡 OtherSlowComponent 渲染了');return <div>这是一个渲染慢的组件</div>;
});

渲染优化分析

组件是否每秒重渲染?原因
Timer每秒更新 time
OtherSlowComponent被当作 children 静态传入,不受 time 影响,且 React.memo 避免重渲染

更多关于 props.children 的内容可以阅读 WHAT - React 组件的 props.children 属性

总结

方法是否推荐说明
使用 props.children✅✅✅非常推荐,结构清晰、性能佳
React.memo 搭配 children更加保险,确保不被不必要的重渲染触发
放到父组件里如果结构允许,这是最清晰的做法
http://www.dtcms.com/wzjs/52811.html

相关文章:

  • java做安卓游戏破解版下载网站西安楼市最新房价
  • 企业官方网站开发外包nba球队排名
  • 软件开发项目管理的分析seo是什么意思啊
  • 云南网络公司网站网站优化的关键词
  • 企业网站做的漂亮吉安seo
  • 嘉兴seo网站建设费用百度云网盘搜索引擎
  • 滁州网站建设价格百度seo怎么操作
  • 建立网站该怎样做seo优化搜索推广
  • 怎样用javaweb做网站今日最新新闻摘抄
  • 武汉网站建设哪家最好网站怎么快速排名
  • 可以自己做装修效果图的网站设计素材网站
  • 受欢迎的购物网站建设网站开发报价方案
  • 网站建设进度计划表网站推广线上推广
  • 好的网站怎么设计师真实有效的优化排名
  • 网站建设费可以走办公费吗合肥网
  • 舟山网站建设公司今日百度小说排行榜
  • 淘宝详情页做的比较好的网站推广网站源码
  • 网站内的链接怎么做的推广软文范例100字
  • 阿里云服务器使用教程苏州优化网站公司
  • 学校网站建设需求分析如何在百度发布信息
  • 网站的布局结构seo 怎么做到百度首页
  • 做微商在哪个网站打广告好品牌策划方案ppt
  • 朝阳建设网站某网站seo诊断分析和优化方案
  • 虚拟主机网站建设过程免费站长统计工具
  • 上海优化网站价格百度关键词排名用什么软件
  • 点点网 wordpress福州seo推广外包
  • 网络营销方式操作过程中要注意哪些问题鸡西seo顾问
  • 免费商城网站申请seo引擎优化方案
  • 在线定制平台网络优化工资一般多少
  • 怎么做网站兼容性测试百度地图的精准定位功能