如果我有反应组件,我只是设置其类变量,即
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.numberElements = 20;
this.color = 'red';
}
render() {
...
}
}
我不能打电话给这个.forceUpdate()'发出重新渲染(每当我更新我的类变量)而不是维护状态并调用setState?。或者这样做不好,如果是这样,为什么?
答案 0 :(得分:3)
$credits = User::orderBy('credits', 'DESC')->get();
$topFiveCredits = $credits->take(5);
在你正在描述的场景中非常有用。
来自docs:
默认情况下,当组件的状态或道具发生更改时,组件将重新呈现。如果您的
forceUpdate()
方法依赖于其他一些数据,您可以通过调用render()
告诉React该组件需要重新呈现。
但需要注意的是,它会跳过forceUpdate()
,因此您无法获得优化权益。
此外,使用shouldComponentUpdate()
"绕过"正确的生命周期,使您的代码不那么简单,可能更难理解和维护。
因此,建议尽可能使用forceUpdate()
和state
。
通常你应该尽量避免使用forceUpdate(),只能在render()中从
props
和this.props
读取。