React官方文档中提到 https://zh-hans.reactjs.org/d...
你可以在componentDidMount()
里直接调用setState()
。它将触发额外渲染,但此渲染会发生在浏览器更新屏幕之前。如此保证了即使在render()
两次调用的情况下,用户也不会看到中间状态。请谨慎使用该模式,因为它会导致性能问题。通常,你应该在constructor()
中初始化 state。如果你的渲染依赖于 DOM 节点的大小或位置,比如实现 modals 和 tooltips 等情况下,你可以使用此方式处理
个人理解,在componentDidMount阶段,dom节点不是已经渲染过一次么? 再次调用setState触发再次渲染,dom节点更新。无论如何,是二次更新了。为什么用户看不到中间状态呢? 是有什么特殊机制么? 二次渲染发生在浏览器更新屏幕之前,难道第一次没有更新屏幕么?
###感觉指渲染了,只是过程肉眼看不见,可能在机器性能跟不上的时候,能有明显感觉