React 学习——useMemo

useMemo使用场景:消耗非常大的计算,例如递归

import {  useMemo, useState } from 'react';
// 缓存:消耗非常大的计算,例如递归
function fib(n){
  console.log('fib');
  if(n < 3)
    return 1;
  return fib(n-2) + fib(n-1);
}

const App = () => {
  const [count1,setCount1] = useState(0);
  const [count2,setCount2] = useState(0);
  
  const result = useMemo(()=>{
    return fib(count1)
  },[count1])
  // const result = fib(count1);
  console.log('组件重新渲染了');
  return (
    <div className="home">
      <button type="primary" onClick={()=>setCount1(count1 + 1)}>count1值{count1}</button><br />
      <button type="primary" onClick={()=>setCount2(count2 + 1)}>count2值{count2}</button><br />
      {result}
    </div>
  )
}

export default App

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用React Hooks中的useCallback函数时要避免滥用。useCallback函数的作用是为了优化性能,它可以确保当依赖项没有变化时,回调函数不会被重新创建。这在某些情况下是非常有用的,比如在父组件中传递回调函数给子组件时,可以避免子组件的不必要渲染。 然而,滥用useCallback函数可能会导致性能下降。当依赖项数组为空时,useCallback函数将会在每次渲染时都返回一个新的回调函数,这可能会导致子组件的不必要渲染。因此,应该谨慎使用useCallback函数,并确保只在必要时才使用。 另外,需要注意的是,被useCallback包裹的函数也会被重新构建并当作useCallback函数的实参传入。这意味着,如果传入的函数依赖于外部的变量,那么每次渲染时,都会创建一个新的函数实例,这可能会导致不必要的性能开销。因此,在使用useCallback函数时,应该仔细考虑函数的依赖关系,避免不必要的重新创建。 综上所述,滥用useCallback函数可能会导致性能下降,因此在使用时需要谨慎考虑,并确保只在必要时使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [React-HOOK——useRef、useCallback、useMemo、useContext、useReducer](https://blog.csdn.net/qq_52301431/article/details/127302213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [React Hooks 实现撤消和重做功能](https://download.csdn.net/download/weixin_42099815/19472723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [React hooks之useCallback的使用场景及其深度解读](https://blog.csdn.net/hyupeng1006/article/details/127754586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值