React的组件,不管是class组件仍是函数组件,在开发模式下,每次渲染会执行两次。react
代码以下:git
import React from 'react' let count = 0; const Page = () => { count++ console.log(`run ${count} times`) return ( <div>Page</div> ) } export default Page
效果:github
这样作是React刻意而为之。数组
防止组件内有什么side effect而引发bug,提早预防。ide
对于React而言,它推崇的是渲染结果只与state和props有关。即result=f(props, state).函数
若是组件每次的state和props是同样的,就应该返回同样的结果,若返回结果不同,说明代码中可能存在反作用。spa
如示例中的count。code
这样能够帮助开发者在开发的时候就发现一些问题,及时解决。blog
详见issue开发