知乎 https://www.zhihu.com/question/387196401
react的原则是 page = render(data)
,也就是当data一致时,渲染出的页面也应该是一致的,在开发模式下,触发两次有助于预防一些bug。
组件的一次更新流程,在视图真正刷新之前的部分都是可能被多次调用的,因而这些部分中不能出现副作用,开发环境下会刻意触发两次以使得开发者能注意到误用的副作用。
这个问题我去年实习的时候问到过同事,是因为 React 在 Dev mode 下会刻意执行两次渲染,以防止组件内有什么 side effect 引起 bug,提前预防。