在componentDidMount中直接调用setState,用户不会看到中间状态?

React官方文档中提到 https://zh-hans.reactjs.org/d...

你可以在 componentDidMount()直接调用 setState()。它将触发额外渲染,但此渲染会发生在浏览器更新屏幕之前。如此保证了即使在 render() 两次调用的情况下,用户也不会看到中间状态。请谨慎使用该模式,因为它会导致性能问题。通常,你应该在 constructor() 中初始化 state。如果你的渲染依赖于 DOM 节点的大小或位置,比如实现 modals 和 tooltips 等情况下,你可以使用此方式处理

个人理解,在componentDidMount阶段,dom节点不是已经渲染过一次么? 再次调用setState触发再次渲染,dom节点更新。无论如何,是二次更新了。为什么用户看不到中间状态呢? 是有什么特殊机制么? 二次渲染发生在浏览器更新屏幕之前,难道第一次没有更新屏幕么?

阅读 3.4k
1 个回答

感觉指渲染了,只是过程肉眼看不见,可能在机器性能跟不上的时候,能有明显感觉

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题