React-hooks钩子函数

189 阅读2分钟

react16.8版本出来的一个钩子函数

react中有两种写法,一种是类的写法,一种是函数式写法,纯函数写法中存在一个问题,不带钩子函数,由于我们项目在很多场景中会使用到钩子函数,所以我们基本上项目中经常使用的是hooks函数时写法;

hooks中常用的几种:

1:useState-------->相当于类组件中的constructor对数据进行初始化 hooks不允许直接修改state,需要通过setState来修改state

2:useEffect-------->对数据进行挂载,更新

useEffect有第二个参数,不传递的时候,会出现死循环,页面将卡顿死; 传递一个空数组的时候,仅在挂载和卸载的时候执行 传递某个值的时候,会在该值发生更新的时候执行,相当于监听该值的变化 传递多个的时候,不管哪个值发生变化的时候都会重新渲染,有时候set的放在这里不会发生重新渲染 当useEffect中使用return方法的时候,这个return方法会在组件销毁的时候调用;

3:useReducer(),三个参数,一般可用useState实现相同的效果,比较少用;

4:useMemo()函数值返回依赖,值改变的时候会重新计算;

5:useCallback()函数值返回依赖,值改变会重新渲染

useMemo和useCallback的区别:

useMemo计算结果是return回来的值,主要用于缓存计算结果的值,应用场景就是需要计算的状态,比如说你做了某个操作,列表中需要根据你的操作来返回相应的数据,就可以根据筛选的条件过滤掉某些东西类似这种;

useCallback计算结果是函数,主要用于缓存函数,应用场景如:需要缓存的函数,很多函数可能会因为某个state的变化导致整个组件会被重新渲染,一些函数没有必要被重新刷新的,就应该被缓存起来,提高性能,减少资源浪费;

6:useRef一般就是用来取节点的值;

7:useContext,定义在父组件中,子组件接收context对象,返回对象当前值,在父组件发生变化时,重新渲染子组件;

Snipaste_2022-09-13_18-05-23.png

......待更新中