以前,我们使用componentWillReceiveProps()
根据道具变更来更新组件。假设有一个组件根据App.js中的某些状态启用或禁用输入字段
现在这被标记为不安全,并且
https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops
解释了几种可供选择的替代方法。
但是我不知道为什么这些案例都没有提到使用shouldComponentUpdate()
。我可以使用
shouldComponentUpdate(nextProp){
this.setState({
active: nextProp.active
});
return true;
}
要设置组件的活动状态,该状态将从输入字段中删除禁用的对象。
通过阅读文档,我无法理解为什么他们建议使用相当复杂的备忘助手或componentDidUpdate生命周期(仅提供以前的Prob,因此说明其状态比当前状态要早)。
有没有理由不像我的示例那样做?
答案 0 :(得分:3)
应该在道具更改导致您不希望的重新渲染的情况下使用
shouldComponentUpdate-您可能只关心某些会影响渲染视图的道具。您可以手动检查nextProps对这些特定道具的更改,然后决定是否渲染。
您不应在shouldComponentUpdate内部修改状态(或其他任何状态)。