在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

回到顶部