创建方式

  1. //三种写法
  2. //写法一
  3. const Hello = (props) => {
  4. return <div>{props.message}</div>
  5. }
  6. //写法二
  7. const Hello = props => <div>{props.message}</div>
  8. //写法三
  9. function Hello(props){
  10. return <div>{props.message}</div>
  11. }

在react16.8以前函数组件只能被动接收外部数据,并且没有自己的生命周期钩子函数,函数内部也没有this可用

  1. function FuncComp (props) {
  2. const { name, changeName } = props;//这里的形参props即当前函数组件接受的外部属性
  3. return (
  4. <div>我叫:{name} <button onClick={changeName}>点我修改名字</button></div>
  5. )
  6. }
  7. //使用函数组件的时候和类组件一样,都是通过标签去实例化
  8. //<FuncComp name="张三" changeName={()=>{}}/>
  9. //函数组件的使用方式和类组件一样
  10. class App extends React.Component {
  11. state = {
  12. name: "张三"
  13. }
  14. changeName = () => {
  15. this.setState({ name: '李四' });
  16. }
  17. render () {
  18. const { name } = this.state;
  19. return <FuncComp name={name} changeName={this.changeName} />
  20. }
  21. }

函数组件替代 class 组件

  • 函数组件没有 State
    • 使用 API 中的 useState 代替
  • 函数组件没有生命周期
    • 使用 Hooks API
      • 其中一个 useEffect 代替

useState
useEffect