react 性能问题和优化
某个组件更新,子组件也会一起更新
react更新采用时间切片,vue则是依赖收集
执行更新操作为16ms,如果操过16ms,先暂停更新,让浏览器先渲染
时间切片时间是16ms,因为人眼刷新率约60帧,60hz为16ms
1.避免state改为同样的值(class用PureComponent,函数组件默认已经处理了)
2.处理子组件更新(class用PureComponent,函数组件用meno)
3.子组件的props对象/方法需要注意是否会更新,基本属性不会造成更新
import styles from './index.less'; import { Button } from 'antd'; import React, { useCallback, useMemo, useState } from 'react'; import Son from './components/son' let MemoSon = React.memo(Son) const HomePage: React.FC = () => { let [num, setNum] = useState(0) // 更新num--index组件更新--重新定义obj和f1 // let obj = { // a: 1 // } // function f1() { // console.log(1) // } let obj = useMemo(() => { return { a: 1 } }, []) let f1 = useCallback(() => { console.log(1) }, []) let a = '1' return ( <div className={styles.container}> <h2>性能问题和优化</h2> <div>某个组件更新,子组件也会一起更新</div> <div>react更新采用时间切片,vue则是依赖收集</div> <div>执行更新操作为16ms,如果操过16ms,先暂停更新,让浏览器先渲染</div> <div>时间切片时间是16ms,因为人眼刷新率约60帧,60hz为16ms</div> <div>1.避免state改为同样的值(class用PureComponent,函数组件默认已经处理了)</div> <div>2.处理子组件更新(class用PureComponent,函数组件用meno)</div> <div>3.子组件的props对象/方法需要注意是否会更新,基本属性不会造成更新</div> <div>{num}</div> <Button type="primary" size="small" onClick={() => { setNum(num + 1) }}>修改数据</Button> {/* 会更新子组件 */} {/* <Son></Son> */} {/* 不会更新子组件 */} {/* <MemoSon></MemoSon> */} <MemoSon obj={obj} f1={f1} a={a}></MemoSon> </div> ); }; export default HomePage;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏