是否有一个react生命周期方法,我们可以使用它来执行重新渲染,只有当更新的状态与以前的状态不同时。例如,在下面的代码中:
class App extends Component {
constructor() {
super();
this.state = {
value: "abcd"
};
}
handlePress = () => {
this.setState({ value: "abcd" });
};
render() {
console.log("render");
return (
<div>
<h1>{this.state.value}</h1>
<button onClick={this.handlePress}>Press</button>
</div>
);
}
}
字符集
您可以看到,在按下按钮时,即使状态与前一个相同,它仍然会导致render()
函数运行。
我知道我们可以使用shouldComponentUpdate()
或PureComponent
来防止这种情况,但是否有其他方法/生命周期方法可以实现这一点?
我还创建了一个上面代码here的沙盒/Playground。
1条答案
按热度按时间0x6upsns1#
如果您使用的是功能性组件,则可以使用
React.memo
来实现这一点。字符集
对于类组件,可以使用
shouldComponentUpdate
,但必须手动比较更改。型
编辑
React.memo只跟踪props,不跟踪state。
感谢@Oktay Yuzcan指出这一点。