在React中,组件可以被分为有状态组件和无状态组件。有状态组件是指有自己的状态(state)和生命周期函数的组件,而无状态组件则是没有状态和生命周期函数的组件。其中,无状态组件就是纯函数组件,它的定义只依赖于传入的props,不依赖于任何组件的状态(state)。因此,它也被称为函数式组件或无状态函数组件。
之前的UI组件里面只有一个Render函数,这时候就可以叫这个组件为无状态组件,其实无状态组件就相当于一个函数: 接受一个props,返回一个JSX:
相较于有状态组件,无状态组件有以下几个优点:
- 简单高效:无状态组件只包含一个函数,所以比有状态组件简单,没有状态维护的负担,性能也更高效。
- 方便测试:由于无状态组件没有自己的状态(state),只依赖于传入的props,所以它的测试更加方便。
- 可复用性强:由于无状态组件没有状态(state),所以它不依赖于任何状态(state),具有较强的可复用性。
- 提高代码可读性:由于无状态组件的代码简单明了,可以很容易地理解其功能。
除此之外,无状态组件还可以帮助开发者更好地管理组件代码,提高组件的复用性。因为无状态组件本身只是一个纯函数,它的作用就是根据props来渲染页面,没有副作用,也不会影响其他组件的状态(state)。所以,无状态组件是一个很好的组件设计模式。
需要注意的是,虽然无状态组件的定义只依赖于传入的props,但是这并不是说无状态组件只能接收props。无状态组件同样也可以接收其他属性,例如ref、key等等。在React中,ref和key是特殊的属性,用于对组件进行唯一标识和获取组件实例的操作,因此无状态组件也可以使用ref和key属性。
如果一个组件只有render函数就定义成无状态组件吧!--其实基本上简单的UI组件都可以通过无状态组件定义!但这不是完全说死的事情