千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  html5面试题  > React Hooks各种函数介绍

React Hooks各种函数介绍

来源:千锋教育
发布人:syq
时间: 2022-11-16 16:58:37 1668589117

  - useState: useState是用于声明一个状态变量的,用于为函数组件引入状态. useState 只接收一个参数,这个参数可以是数字、字符串、对象等任意值,用于初始化声明的状态变量。

  也可以是一个返回初始值的函数,最好是函数,可在渲染时减少不必要的计算。返回一个长度为2的读写数组,数组的第一项是定义的状态变量本身,第二项是一个用来更新该状态变量的函数,约定是set前缀加上状态的变量名. useState Hook 中返回的 setState,并不会帮我们自动合并对象状态的属性;

React Hooks各种函数

  setState中接收的对象参数如果地址没变的话会被React认为没有改变,因此不会引起视图的更新

  - useReducer: useReducer 是 useState 的升级版。

  在useState中返回的写接口中,我们只能传递最终的结果,在setN的内部也只是简单的赋值操作。 创建初始状态值initialState, 创建包含所有操作的 reducer(state, action) 函数,每种操作类型均返回新的 state 值 根据 initialState 和 reducer 使用 const [state, dispatch] = useReducer(reducer, initialState) 得到读写API调用写接口,传递的参数均挂在 action 对象上

  - useContext: context是上下文的意思,上下文是局部的全局变量这个局部的范围由开发者自己指

  - useEffect: effect是副作用的意思,对环境的改变就是副作用。副作用是函数式编程里的一个概念在React中,useEffect就是在每次render后执行的操作,相当于 afterRender, 接收的第一个参数是回调函数,第二个参数是回调时机。可用在函数组件中模拟生命周期。 如果同时出现多个 useEffect ,会按出现顺序依次执行

  - useLayoutEffect useEffect总是在浏览器渲染完视图过后才执行,如果 useEffect 里面的回调函数有对 DOM 视图的操作,则会出现一开始是初始化的视图,后来执行了 useEffect里的回调后立马改变了视图的某一部分,会出现一个闪烁的状态。 为了避免这种闪烁,可以将副作用的回调函数提前到浏览器渲染视图的前面执行,当还没有将 DOM挂载到页面显示前执行Effect中对DOM进行操作的回调函数,则在浏览器渲染到页面后不会出现闪烁的状态。layout 是视图的意思,useLayoutEffect 就是在视图显示出来前执行的副作用。useEffect 和 useLayoutEffect就是执行的时间点不同,useLayoutEffect是在浏览器渲染前执行,useEffect 是在浏览器渲染后执行。

  但二者都是在render函数执行过程中运行,useEffect是在render完毕后执行,useLayoutEffect是在render完毕前(视图还没渲染到浏览器页面上)执行。 因此 useLayoutEffect总是在useEffect前执行。 一般情况下,如果Effect中的回调函数中涉及到 DOM 视图的改变,就应该用 useLayoutEffect,如果没有,则用 useEffect。

  - useRef useRef Hook是用来定义一个在组件不断render时保持不变的变量。组件每次 render后都会返回一个虚拟DOM,组件内对应的变量都只属于那个时刻的虚拟 DOM。useRef Hook就提供了创建贯穿整个虚拟DOM更新历史的属于这个组件的局部的全局变量。为了确保每次render后使用useRef获得的变量都能是之前的同一个变量,只能使用引用做到,因此,useRef 就将这个局部的全局变量的值存储到了一个对象中,属性名为:current useRef的current变化时不会自动render useRef可以将创建的 Refs对象通过ref属性的方式引用到DOM节点或者React实例。

  - useCallback是将某个函数“放入到react底层原型链上,并返回该函数的索引”,而useMemo是将某个函数返回值“放入到react底层原型链上,并返回该返回值的索引”。一个是针对函数,一个是针对函数返回值。

  - useImperativeHandle: useImperativeHandle可以让父组件获取并执行子组件内某些自定义函数(方法)。本质上其实是子组件将自己内部的函数(方法)通过useImperativeHandle添加到父组件中useRef定义的对象中。

  - useMemo useMemo可以将某些函数的计算结果(返回值)挂载到react底层原型链上,并返回该函数返回值的索引。

  当组件重新渲染时,如果useMemo依赖的数据变量未发生变化,那么直接使用原型链上保存的该函数计算结果,跳过本次无意义的重新计算,达到提高组件性能的目的。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT