为什么我不应该在ReactJS中使用shouldComponentUpdate?

时间:2019-10-22 23:59:46

标签: reactjs

以前,我们使用componentWillReceiveProps()根据道具变更来更新组件。假设有一个组件根据App.js中的某些状态启用或禁用输入字段

现在这被标记为不安全,并且

https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops

解释了几种可供选择的替代方法。

但是我不知道为什么这些案例都没有提到使用shouldComponentUpdate()。我可以使用

shouldComponentUpdate(nextProp){
    this.setState({
        active: nextProp.active
    });
    return true;
}

要设置组件的活动状态,该状态将从输入字段中删除禁用的对象。

通过阅读文档,我无法理解为什么他们建议使用相当复杂的备忘助手或componentDidUpdate生命周期(仅提供以前的Prob,因此说明其状态比当前状态要早)。

有没有理由不像我的示例那样做?

1 个答案:

答案 0 :(得分:3)

应该在道具更改导致您不希望的重新渲染的情况下使用

shouldComponentUpdate-您可能只关心某些会影响渲染视图的道具。您可以手动检查nextProps对这些特定道具的更改,然后决定是否渲染。

您不应在shouldComponentUpdate内部修改状态(或其他任何状态)。