React常用钩子函数和context

1.useMemo

使用useMemo可以传递一个创建函数和依赖项,创建函数会返回一个值,只有在依赖项改变的时候,才会重新调用此函数,返回一个新的值。简单来说,就是让组件中的函数随状态更新。

使用方法:

1)接收一个函数作为参数

2)接收第二个参数作为依赖列表

3)返回一个值,返回值可以是函数,对象等都可以

复杂计算逻辑优化使用场景

未优化的代码如下,当点击div区域时,触发setAge,改变的是age,跟getDoubleNum方法其实是不相关的,但是在控制台中可以看到打印了很多次 获取双倍num,说明该方法不断被触发,其实是没有必要的如果计算量大,对性能是有影响的,所以需要进行优化

使用useMemo优化后代码如下。此时getDoubleNum方法是接收一个返回的值,使用useMemo后,再点击div区域改变age的值,此时执行返回的return 2*num以及打印只有在num更新时才会去执行,然后返回值给到fetDoubleNum再渲染到试图上,这样就减少了不必要的计算达到优化的作用

2.useRef

返回一个子元素索引,此索引在整个生命周期中保持不变,作用:长久保存数据,但是保存的数据发生改变的时候不会通知,且实行变更不会重新渲染

例:有一个需求,当计时器自增到某个值的时候清除该定时器,未使用useRef代码如下,当num大于10后,会发现不停的打印“大于10了,清除定时器”而其实定时器是没有清除掉的。所以会一直打印这个内容,而打印出的timer显示undifined,这是因为每次渲染都是通过setInterval重新返回timer,timer也在更新,也就丢失了这个数据,导致无法精准清除某个需要清除的定时器

使用useRef后

3. useLockFn

用于给一个异步函数增加竞态锁,防止并发执行

使用示例:

原来:

使用useLockFn后:

4. useDebounceFn

防抖动

使用示例:

5.context(上下文)

传递公共信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值