提问人:De-J 提问时间:7/28/2023 最后编辑:De-J 更新时间:7/28/2023 访问量:40
在 react 中控制重新渲染?
Controlling re-renders in react?
问:
我的任务是使用反应生命周期方法*其他*来控制组件的重新渲染。就像如果返回 false 如何防止重新渲染一样,如果状态与之前的状态相同,我应该能够使用其他生命周期方法之一(例如,也许?)来防止重新渲染。shouldComponentUpdate()
shouldComponentUpdate()
componentWillUpdate()
componentDidUpdate()
这可能吗?如果是这样,如何?
我有这种类型的设置:
class App extends Component {
constructor() {
super();
this.state = {
text: "",
someStateProperty: "abcd"
};
}
// shouldComponentUpdate(nextProps, nextState) {
// if (this.state.someStateProperty !== nextState.someStateProperty)
// return true;
// return false;
// }
render() {
console.log("render");
return (
<input
value={this.state.text}
type="text"
onChange={(e) => this.setState({ text: e.target.value })}
/>
);
}
}
在上面的代码中,我在保持不变的同时进行更新。this.state.text
this.state.someProperty
shouldComponentUpdate()
每次调用 时都会调用,并且由于内部的比较而返回 false,从而防止输入组件的重新呈现,因为 中没有变化。
这样可以防止函数再次运行,并且我不会在控制台中记录渲染。this.setState
this.state.someProperty
render()
那么,有没有另一种生命周期方法可以复制这种行为呢?
我还在这里创建了一个沙盒/游乐场。
答: 暂无答案
评论
PureComponent
而不是Component
继承。return nextProps.someStateProperty !== this.state.someStateProperty || nextProps.text !== this.state.text
shouldComponentUpdate()
PureComponent
forceUpdate(),
但在这种情况下,这似乎是一件奇怪的事情。setState