11_render函数的优化

文章展示了如何在React应用中使用PureComponent和memo来优化组件的性能。通过重写shouldComponentUpdate方法以及使用memo高阶函数,只在props或state有变化时才触发组件的渲染,减少不必要的渲染操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//PureComponent  实现 shouldComponentUpdate的优化
import React, { PureComponent } from 'react'
import Home from './Home'
import Recommend from './Recommend'
import Profile from './Profile'

export class App extends PureComponent {
    constructor(){
        super()
        this.state ={
            message : "hello world",
            count:0
        }
    }
    //nextProps(组件传过来的参数),newState(更新后的state)两个参数
    // 性能优化  有更改才重新执行render
    // shouldComponentUpdate(nextProps,newState){
    //     // console.log(nextProps); 
    //     if(this.state.message !==newState.message ||this.state.count !==newState.count ){
    //         return true
    //     }
        
    // }
    ChangText(){
        this.setState({message:"你好,李银河!!"})
    }
    increment(){
        this.setState({count:this.state.count+1})
    }
  render() {
    const {message,count} = this.state
    return (
      <div>
        <h2>App-{message}-{count}</h2>
        <button onClick={e=>this.ChangText()}>按钮</button>
        <button onClick={e=>this.increment()}>+1</button>
        <Home message={this.state.message}/>
        <Recommend count = {count}/>
        <Profile message={message}/>
      </div>
    )
  }
}

export default App

import React, { PureComponent } from 'react'

export class Home extends PureComponent {
    constructor(props){
        super(props)
        this.state ={
            friend:[]
        }
    }
    // shouldComponentUpdate(Props,newState){
    //     // 对比自己的state是否有变化
    //     // console.log(Props);
    //     // console.log(this.props);
    //     if(this.props.message !== Props.message){
    //         return true
    //     }
    // }

  render() {
    console.log("Home中render被执行");
    return (
      <div>
        <h2>Home+{this.props.message}</h2>
      </div>
    )
  }
}

export default Home
import React, { PureComponent } from 'react'

export class Recommend extends PureComponent {

    // shouldComponentUpdate(Props,newState){
    //     if(this.props.count !== Props.count){
    //         return true
    //     }
        
    // }
  render() {
    console.log("Recommend中render被执行");
    return (
      <div>
        <h2>Recommend+{this.props.count}</h2>
      </div>
    )
  }
}

export default Recommend
import { memo } from "react"

const Profile = memo(function Profile(props){
    console.log(11111);
    //mmemo函数实现函数组件的性能优化
    return(
         <h1>Profile: {props.message}</h1> 
    )
   
})
export default Profile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值