在React中使用forceUpdate而不是setState?

时间:2018-03-03 18:19:24

标签: javascript reactjs

如果我有反应组件,我只是设置其类变量,即

class MyComponent extends React.Component {

    constructor(props) {
      super(props);
      this.numberElements = 20;
      this.color = 'red';
    }

    render() { 
       ...
    }
}

我不能打电话给这个.forceUpdate()'发出重新渲染(每当我更新我的类变量)而不是维护状态并调用setState?。或者这样做不好,如果是这样,为什么?

1 个答案:

答案 0 :(得分:3)

$credits = User::orderBy('credits', 'DESC')->get(); $topFiveCredits = $credits->take(5); 在你正在描述的场景中非常有用。

来自docs

  

默认情况下,当组件的状态或道具发生更改时,组件将重新呈现。如果您的forceUpdate()方法依赖于其他一些数据,您可以通过调用render()告诉React该组件需要重新呈现。

但需要注意的是,它会跳过forceUpdate(),因此您无法获得优化权益。

此外,使用shouldComponentUpdate()"绕过"正确的生命周期,使您的代码不那么简单,可能更难理解和维护。

因此,建议尽可能使用forceUpdate()state

  

通常你应该尽量避免使用forceUpdate(),只能在render()中从propsthis.props读取。