React中性能优化的方案
-
减轻state
-
在state中只存储和组件渲染有关的数据
-
-
import { Component } from "react";
class App extends Component {
state = {
num: 0
}
componentDidMount() {
// dom渲染完成
// 开启定时器
// timerid 存储到this中,而不是state中
this.timerId = setInterval(() => { }, 1000)
}
componentWillUnmount() {
// 卸载
clearInterval(this.timerId)
}
render() {
return (
<div id="app">
</div>
)
}
}
export default App
-
避免不必要的重新渲染
-
使用shoundComponentUpdate钩子函数手动更新组件
-
使用纯组件 PureComponent自动更新组件,使用方式和component一致
PureComponent会分别对前后两次props和state进行浅层对比
浅层比较:
对于基本数据类型直接比较两个值是否相同
引用数据类型比较的是地址,所以不要直接修改state中的引用数据类型,应该创建一个新的实例
-
import { PureComponent } from "react";
class App extends PureComponent {
state = {
num: 0
}
render() {
console.log('render')
return (
<div id="app">
<button onClick={this.handleClick}>点我</button>
<hr />
<div>{this.state.num}</div>
</div>
)
}
handleClick = () => {
this.setState({
num: parseInt(Math.random() * 3)
})
}
}
export default App
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!