【发布时间】:2020-07-09 02:42:29
【问题描述】:
在 React 文档中,https://reactjs.org/docs/react-component.html
您可以立即在 componentDidMount() 中调用 setState()。它会触发额外的渲染,但会在浏览器更新屏幕之前发生。这保证了即使在这种情况下 render() 将被调用两次,用户也不会看到中间状态。请谨慎使用此模式,因为它通常会导致性能问题。在大多数情况下,您应该能够在 constructor() 中分配初始状态。但是,对于模态框和工具提示等情况,当您需要在渲染取决于其大小或位置的内容之前测量 DOM 节点时,它可能是必要的。
在我自己看来,当我们调用 componentDidMount() 时,组件已经渲染了一次。我们调用 setState,组件会再次渲染。我如何理解It will trigger an extra rendering, but it will happen before the browser updates the screen.?第一个 render() 不会更新屏幕吗?
【问题讨论】:
-
鉴于 JS 的用户空间是单线程的,如果您在事件循环迭代期间修改 DOM 两次 - 布局将只绘制一次。换句话说:
e.textContent = 'foo'; e.textContent = 'bar';是 1 个油漆。不是 2.
标签: javascript reactjs