有状态组件和无状态组件的区别
有状态组件就是一个类,无状态组件是一个函数;
区别:
1.(是否拥有state)有状态组件可以使用状态:state,无状态组件不能使用state;只有继承component这个组件它才能拥有state进行一些数据的存储和管理,仍然可以拥有props;
2.(生命周期)如果是有状态组件的话那么你就会拥有生命周期函数,无状态组件就不用有生命周期函数,因为数据的更改都是通过状态进行更改。使用props进行组件间的通信进行传值,如果要更改某一些数据的话使用的是state,既然数据可以发生变化那么它就会触发对应的生命周期函数;
什么时候使用有状态组件,什么时候使用无状态组件:
如果想要存储一些数据并且想要对这些数据进行增删改查那么就应该使用有状态的组件,如果只是单纯的处理一些逻辑就是用无状态的组件,我们更多应该是使用的是无状态的组件(因为如果是一个有状态的组件的话那么他就一定会触发生命周期定义的一些函数,一旦触发这些函数就会影响当前项目的运行,所以在尽可能的情况下使用无状态的组件,除非你对当前的组件不是很清晰是否要存储数据这个时候可能选择使用有状态的组件或者确定要拥有一些状态去存储数据那么就需要使用有状态的组件)状态的东西都会通过父级去传递,比如Persons,Header这些组件如果想用到数据的话我们可以通过传递的形式给它传递过去,即当前的数据能够进行统一的数据管理,比如说通过父级管理数据,其他组件如果想拥有这个组件的话可以通过传值的形式给它。
有状态组件能使用this,无状态组件不能使用this;