首页 > 其他分享 >useMemo

useMemo

时间:2024-03-24 09:22:56浏览次数:29  
标签:const useMemo fib result count1 count2

useMemo

我们应该如何去正确理解useMemo

function fib(n) {
    console.info('计算函数被执行1')
    return n < 3 ? 1 : fib(n - 2) + fib(n - 1)
}
function App() {
    const [count1, setCount1] = useState(0)
    const [count2, setCount2] = useState(0)
    console.info('组件重新渲染了')

  //   现在我们有个需求,是基于 count1 的求和
    const result = fib(count1)
  return (
    <>
      <div className="App">
          根据 count1 的求和:{result}
          <button onClick={() => { setCount1(count1 + 1) }}>change count1: {count1}</button>
          <button onClick={() => { setCount2(count2 + 1) }}>change count2: {count2}</button>
      </div>
    </>
  )
}

其实就是当我们需要对state的数据进行处理的时候,可以用useMemo

以下这行代码,在每次组件渲染时都会执行(也就是每次state更新的时候),所以我们需要用useMemo包起来,使它仅在count1改变的时候执行

const result = fib(count1)

改造如下

const result = useMemo(() => {
    return fib(count1)
}, [count1])

标签:const,useMemo,fib,result,count1,count2
From: https://www.cnblogs.com/zhumenglong/p/18092081

相关文章

  • react-native中memo、useMemo、useCallback 你真的用明白了吗
    memo的作用在React的渲染流程中,一般来说,父组件的某个状态发生改变,那么父组件会重新渲染,父组件所使用的所有子组件,都会强制渲染。而在某些场景中,子组件并没有使用父组件传入的没有发生更改的状态时,子组件重新渲染是没有必要的。因此有了React.memomemo的使用memo是个高阶......
  • react_hooks系列 useMemo
    一、概念和作用​写在函数式组件里的“函数调用代码”。如果函数式组件重新渲染时,每次都会执行“调用函数的代码”。如果不是必须的,那么就是性能的浪费。useMemo就是解决这个问题的。即:useMemo是防止不必要的的函数调用。​文字描述总是让你很难理解。很抽象。还是要看代码的......
  • useMemo依赖没变,回调还会反复执行?
    经常使用React都知道,有些hook被设计为:依赖项数组+回调的形式,比如:useEffectuseMemo通常来说,当依赖项数组中某些值变化后,回调会重新执行。React的写法十分灵活,那么有没有可能,在依赖项数组不变的情况下,回调依然重新执行?描述下Demo在这个示例中,存在两个文件:App.tsxLazy.......
  • 【React】React.memo与useMemo的区别和联系
    概述React.memo和useMemo都是React进行性能优化的手段,它们允许我们缓存需要进行高性能计算的结果,以便下次渲染页面时,返回缓存的值而不必重新计算函数,从而确保我们的应用程序运行的更快,避免不必要的开销。React.memo详解为什么memo(memoization的简写)在React中这么重要呢?在......
  • 【React系列】React.memo() vs useMemo()
    React.memo()与useMemo()之间有什么主要区别?性能优化是一只web开发中的一个重要讨论点。对于react团队同样如此,为了实现加速组件的渲染速度,采用“备忘录”的方式。所以这个时候就React.memo()和useMemo钩子就为了解决这个问题产生了。本文将比较和对比React.memo和useMem......
  • useMemo的用法
    类似于计算属性,当响应式依赖项变化时,计算新的cache值,如下:constcachedValue=useMemo(calculateValue,dependencies)import{useMemo}from'react'; functionTodoList({todos,tab}){constvisibleTodos=useMemo(()=>filterTodos(todos,tab),[todos,tab]......
  • React 性能優化:使用 memo、useCallback、useMemo
    在寫網頁時,我們通常習慣把一個頁面切割成很多的元件(Component),讓我們容易組織與管理頁面的組成。但是在React中複雜的元件關係,如果沒有經過優化,將有可能會造成性能上的問題。在FunctionComponent中,重新渲染(re-render)很輕易就會被觸發,少量的元件時還不會發生太大的問......
  • useEffect useCallback 和 useMemo
    useEffectuseEffect可以帮助我们在DOM更新完成后执行某些副作用操作,如数据获取,设置订阅以及手动更改React组件中的DOM等有了useEffect,我们可以在函数组件中实现像类组件中的生命周期那样某个阶段做某件事情,具有:componentDidMountcomponentDidUpdatecomponentWillUnmou......
  • useCallback,useMemo, React.memo的区别
     同:useCallback,useMemo和React.memo是三个在React中用于优化性能的方法。它们的主要目标是避免不必要的重新渲染和计算。因为当一个组件的状态发生变化时,React会重新渲染整个组件树。用这三个hook和组件,可以提升性能。 异:下面从属性,接收参数,返回值,意义和案例等方面进行详细地......
  • react- hooks 之 useMemo
    1.传入数组的变量需要在使用前进行定义,const[issueType,setIssueType]=useState('1');constissueDisable=useMemo(()=>{console.log('issueType改变啦',issueType,dataSource,haveDetaildataSource);},[issueType,dataSource,haveDetailda......