摘要:不知道大家有没有使用过他的作用和中的差不多吧在需要读取的高度宽度的时候特别需要说到现在基本已经讲完了除了我将会放在篇中讲述相关文章全面转换攻略一本篇之全面转换攻略二本篇剩余全面转换攻略三全局存储解决方案
useCallback,useMemo
因为这两个 api 的作用是一样的,所以我放在一起讲;
语法:
function useMemo(factory: () => T, deps: DependencyList | undefined): T; function useCallback any>(callback: T, deps: DependencyList): T;
区别在于第一个参数,还有参数的传递,另外 useCallback 中 DependencyList 是一个必须值
这两个 api 的作用基本就是缓存数据/方法
使用过 react 的人都知道,在组件传递值的时候,如果 props 中某一值对象引用发生变化,就会发生重新渲染,即使前后2个对象是完全相同的;
这2个参数就是为了解决这个问题,另外也有可以减轻一些方法的rerender的速度;
useRef作用基本是取代 class 中的 createRef,在此不多细说
useContext作用基本是取代 class 中的 Context 中 Context.Provider ,接受参数 Context,因为可能会有多层 context,所以这个参数是必须的,不然无法辨别
useImperativeHandle语法:
function useImperativeHandle(ref: Ref |undefined, init: () => R, deps?: DependencyList): void;
官网是叫 useImperativeMethods,但是我在 @types/react@17.8.7 中,是叫做 useImperativeHandle的,不过函数名还是以实际为准
在官网中,他的作用是这样解释的:
useImperativeMethods自定义使用ref时公开给父组件的实例值。 与往常一样,在大多数情况下应避免使用refs的命令式代码。
这个 api 的使用必定伴随着 forwardRef 这个 api, 使用率基本较低;
官方例子:
function FancyInput(props, ref) { const inputRef = useRef(); useImperativeMethods(ref, () => ({ focus: () => { inputRef.current.focus(); } })); return ; } FancyInput = forwardRef(FancyInput);
在此示例中,呈现的父组件将能够调用fancyInputRef.current.focus()。
简单的说就是讲子组件中的创建方法暴露给父组件
useMutationEffect签名与useEffect相同,但在更新兄弟组件之前,它在React执行其DOM突变的同一阶段同步触发。 使用它来执行自定义DOM突变。
同样的 @types/react@16.8.7 没有这个函数的声明;
不过官网中 大多是告诫尽量少用此函数
语法:
function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
参数基本和 useEffect 相同
官方所说的效果:
签名与useEffect相同,但在所有DOM突变后它会同步触发。 使用它从DOM读取布局并同步重新渲染。 在浏览器有机会绘制之前,将在useLayoutEffect内部计划的更新将同步刷新。
不知道大家有没有使用过 vue,他的作用和 vue 中的 nexttick 差不多吧;
在需要读取 dom 的高度,宽度的时候特别需要
说到现在, api 基本已经讲完了,除了 useReducer, 我将会放在 redux 篇中讲述
相关文章:react hooks 全面转换攻略(一) react本篇之useState,useEffect
react hooks 全面转换攻略(二) react本篇剩余 api
react hooks 全面转换攻略(三) 全局存储解决方案
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/103538.html
摘要:经典案例此例子中是最新的语法其中是他的值是用来设置值的函数是初始值该初始值可以接受任何参数但是记得当他接受为一个函数时就变成了延迟初始化该函数返回值即为这两种初始化方式是相等的但是在函数为初始值时会被执行一次这里只会在初始化的时候执行中的 useState 经典案例: import { useState } from react; function Example() { con...
摘要:版本发布月日,官博发文宣告正式发布。官方文档提供了如下的示例终端上的输出热门文章我在阿里云做前端抓住我们核心的竞争力,并同时发现业务中的问题,跨端推进解决,这是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 热门前端技术快报,聚焦业界新视界;前端领域急速发展的节奏...
摘要:版本发布月日,官博发文宣告正式发布。官方文档提供了如下的示例终端上的输出热门文章我在阿里云做前端抓住我们核心的竞争力,并同时发现业务中的问题,跨端推进解决,这是最好的出路。 showImg(https://segmentfault.com/img/remote/1460000019038442); 【阿里云 TXD 前端月刊】- 热门前端技术快报,聚焦业界新视界;前端领域急速发展的节奏...
阅读 1962·2021-10-25 09:48
阅读 2780·2021-09-22 14:59
阅读 1755·2019-08-29 16:52
阅读 854·2019-08-29 16:07
阅读 2297·2019-08-29 12:38
阅读 1751·2019-08-26 13:23
阅读 875·2019-08-26 11:49
阅读 3264·2019-08-26 10:56