shouldComponentUpdate:而生命周期中有一个叫做shouldComponentUpdate的,从名字就可以看出来:组件是否应该更新,如果我们返回false的话,那么react是不会去进行diff流程,也不会去对比props,更不会去更新用户界面上的组件了。
我们平时可以通过继承PurComponent组件来达到一个简单的优化效果,继承了PurComponent之后会对props进行一层浅比较,在props没有改变的情况下不会去重新走diff更新流程。
而我们在使用function组件的时候也可以通过React.memo达到相同的效果。
//otherContent.js
export default class OtherContent extends PureComponent {
render() {
console.log("otherContent render")
return (
<>
<div>other content</div>
</>
)
}
}
1.在App.js中引入需要展示的组件
2.在子组件中定义方法,触发diff算法
import { Component } from 'react'
export default class ContextContent extends Component {
constructor(...args) {
super(...args)
this.state = {
num: 0
}
}
fn() {
this.setState({
num: 1
})
}
shouldComponentUpdate(nextProps, nextState) {
//nextProps:表示下一个props
//nextState:表示下一个state的值
if (nextState.num !== this.state.num) {
return true
}
return false
}
render() {
console.log("Context render")
return (
<div>
{this.state.num}
<button onClick={this.fn.bind(this)}>点击</button>
</div>)
}
}