网站地图    收藏   

主页 > 前端 > react >

react性能优化之shouldComponentUpdate

来源:未知    时间:2024-05-11 23:00 作者:小飞侠 阅读:

[导读] shouldComponentUpdate 纯组件只能进行浅层比较,要进行深层比较,使用 shouldComponentUpdate, 它用于编写自定义比较逻辑。 返回true重新渲染组件,返回false阻止重新渲染 函数第一个参数为 ne...

shouldComponentUpdate

纯组件只能进行浅层比较,要进行深层比较,使用 shouldComponentUpdate, 它用于编写自定义比较逻辑。

返回true重新渲染组件,返回false阻止重新渲染

函数第一个参数为 nexProps, 第二个参数为 nexState 第三个参数为 nextContext。

注意: 如果返回false `componentWillUpdate` *并且不会调用“componentDidUpdate”。


下面代码演示,定时1秒后根据判断是否渲染组件

import React, { Component, PureComponent } from 'react'
class App extends Component {
    constructor() {
        super()
        this.state = {
            person: {
                name: '张三',
                age: 20 ,
                job: 'waiter'
            }
            
        }
    }
    updateName() {
        setTimeout(() => {
            this.setState({
                person: { 
                    ...this.state.person,
                    job: 'chef'
                }
            })
        }, 1000)
    }
    // 当组件挂载后
    componentDidMount() {
        this.updateName()
    }
    // 深度重新渲染
    shouldComponentUpdate(nextProps, nextState) {
        // ...重点
        // 这里根据自己需求判断是否重新渲染组件
        if(
            nextState.person.name === this.state.person.name 
            && nextState.person.job === this.state.person.job 
        ) {
            return false
        }
        console.log('shouldComponentUpdate', nextProps, nextState)
        return true
    }
    render(state) {
        return  <div>
            App 
            <br/>
            {this.state.person.name} <br/>
            {this.state.person.age} <br/>
            {this.state.person.job}
            </div>
    }
}


export default App;

以上就是react性能优化之shouldComponentUpdate全部内容,感谢大家支持自学php网。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论