在componentDidMount()中的setState()是否被视为反模式
我刚刚看过有关Inside的讨论。setState()``componentDidMount()
您可以看到该
render()
函数之后,该componentDidMount()
函数将被React调用。当您进行setState()
呼叫时,不仅componentDidMount()
使整个组件树都被重新渲染,不仅是当前组件-别忘了,当前组件刚刚完成了渲染。
有些人建议把setState()
电话打进去componentWillMount()
。在某些情况下,我想获取渲染元素的高度并将其存储为状态,而上述方法将不起作用。我还浏览了React的官方网站,它建议在内部进行Ajax调用componentDidMount()
,这再次违背了上述想法。
那么,setState()
放进去我是否错了componentDidMount()
?如果是,我应该申请什么替代方案?
回答:
您可以
setState()
立即致电componentDidMount()
。它会触发额外的渲染,但是会在浏览器更新屏幕之前发生。这样可以保证,即使render()
在这种情况下将调用两次,用户也不会看到中间状态。。在大多数情况下,您应该能够在中分配初始状态
constructor()
。但是,对于模态和工具提示之类的情况而言,当您需要时,这是必要的
反应文档
使用DidMount可以清楚地表明,只有在初始渲染之后才会加载数据。这提醒您正确设置初始状态,因此您不会以导致错误的未定义状态结束。
例
-如果在构造函数中具有所有需要的数据-在state
此处分配
constructor(props) { super(props);
// Don't call this.setState() here!
this.state = { counter: 0 };
}
- 调用异步操作,触摸DOM
componentDidMount()
以上是 在componentDidMount()中的setState()是否被视为反模式 的全部内容, 来源链接: utcz.com/qa/421956.html