【CRR学习笔记】React之函数式组件function,类组件class

1,159 阅读2分钟

###React

前言

在工作中,我常常见到类组件,即便是一个不需要做过多操作的小组件,为什么不用函数式组件呢?带着这个疑惑,我开始关注这两者的区别的优势。

参考文章:Hooks总览

函数式组件function

一个简单的function组件如下:

function SwitchCompany(props){
    return (
    <div>
    ……
    </div>
    );
}

函数式组件的特点是轻量。特点如下:

  1. 没有生命周期,但会被更新挂载,没有生命周期函数
  2. 没有this
  3. 没有state

若无内部状态,只是渲染数据,推荐使用function组件。

但是!react16.8为函数式组件新增了hooks,将React的状态和生命周期等特性引入函数式组件。

hooks内置函数(9种)

分别是:

  1. useState
  2. useEffect
  3. useContext
  4. useReducer
  5. useCallback
  6. useMemo
  7. useRef
  8. useImperativeHandle
  9. useLayout

1, useState 它是一个方法,可以传入值作为state的默认值,返回一个数组,数组的第一项是对应的状态(默认值会赋予状态),数组的第二项是更新状态的函数。 官方推荐使用解构赋值的方式。

可以多次使用。

const [count, setCount] = useState(1);

const App = () => {
    const [count, setCount] = useState(1);
    //传入1作为state默认值,count是它对应的状态,setCount是改变它的函数
    
    return (
        <>
        <h1> count </h1>
        <button onClick={()=>setCount(count+1)}}> + </button>
        </>
    );
}

2,useEffect 在函数组件中执行副作用操作,并且是函数渲染DOM完成后执行副作用操作。 useEffect这个方法传入一个函数作为参数,在函数里面执行副作用代码,并且useEffec的第一个参数还支持返回值为一个函数,这个函数执行相当于组件更新和卸载。

类组件 class

类组件分为普通类组件(React.Component)以及纯类组件(React.PureComponent)。