首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

超性感的React Hooks(十一)useCallback、useMemo

这里主要关注useMemo与useCallback。 useMemo useMemo缓存计算结果。...useMemo/useCallback也是一样,这是一种成本上的交换。那么我们在使用时,就必须要思考,这样的交换,到底值不值?...而当我们使用useMemo/useCallback时,由于新增了对于闭包的使用,新增了对于依赖项的比较逻辑,因此,盲目使用它们,甚至可能会让你的组件变得更慢。...你的组件可能并不需要使用useMemo/useCallback来优化。 3 那么,什么时候使用useMemo/useCallback比较合适? 总的原则,就是当你认为,交换能够赚的时候去使用它们。...不过,当依赖项会频繁变动时,我们也要考虑使用useMemo/useCallback是否划算。

1.3K10

详细解读 React useCallback & useMemo

useMemo useMemo 的作用 官方文档: Pass a “create” function and an array of dependencies. useMemo will only recompute...useMemo 的应用 useMemo 与 useCallback 很像,根据上述 useCallback 已经可以想到 useMemo 也能针对传入子组件的值进行缓存优化。...可以把一些昂贵的计算逻辑放到 useMemo 中,只有当依赖值发生改变的时候才去更新。...useMemo 的返回值定义为返回一个函数这样就可以变通的实现了 useCallback。...当然如果只是进行一些简单的计算也没必要使用 useMemo,这里可以考虑一些计算的性能消耗和比较 inputs 的性能消耗来做一个权衡(如果真有逻辑跟这个比较逻辑差不多,也没必要使用 useMemo

51800

奇怪的useMemo知识增加了

作为「性能优化」手段,一般用useMemo缓存函数组件中比较消耗性能的计算结果: function App() { const memoizedValue = useMemo( () =>...你有没有想过,如果用useMemo缓存函数组件的返回值,会怎么样呢? 举个例子 我们有个全局context —— AppContext。...} />; }, [theme]) } 我们将返回的ExpensiveTree作为useMemo返回值,theme作为依赖。...原理解析 要理解这么做有效的原因,需要了解三点: useMemo返回值是什么 函数组件的返回值是什么 React组件在什么时候render 回答第一个问题:useMemo会将第一个参数(函数)的返回值保存在组件对应...总结 这篇文章提到的useMemo用法,并未在官网文档中体现,而是在#15156[1]中由Dan介绍。 相比Vue,React更灵活,开发过程中需要开发者注意更多细节。

73310

react.memo、useMemo、useCallback深入理解

memo memo和类组件的pureComponent效果一样,使被包裹的组件传入props有更新的时候,才会重新渲染 useMemo useMemo的作用是缓存一个值,阻止它被react重新render...,只有当依赖项改变的时候值才会更新 useMemo第一个参数是个函数,且必须有返回值(被缓存的值),第二个参数是数组,里面放被监听的变量(依赖项),有变量改变时,值才会被更新。...来优化,在不必要执行函数的时候不执行函数 16 const doubleNumber = useMemo(() => slowFunction(inputNumber), [inputNumber])...= useMemo(() => { 20 return { 21 background: dark ?...而被useMemo或者useCallback包裹后,只有当依赖项有变化时才会重新计算,否则react会直接从缓存区里取出来。以此可以节约一些react的性能,避免页面重新渲染时不必要的重复更新。

66010

从React源码角度看useCallback,useMemo,useContext

热身准备useCallback和useMemo是一样的东西,只是入参有所不同。...看完这篇文章, 我们可以弄明白下面这几个问题:useCallback和useMemo的区别?useCallback和useMemo的使用场景有哪些?useCallback和useMemo是做什么的?...看完这篇文章, 我们可以弄明白下面这几个问题:useCallback和useMemo的区别?useCallback和useMemo的使用场景有哪些?useCallback和useMemo是做什么的?...看完这篇文章, 我们可以弄明白下面这几个问题:useCallback和useMemo的区别?useCallback和useMemo的使用场景有哪些?useCallback和useMemo是做什么的?...看完这篇文章, 我们可以弄明白下面这几个问题:useCallback和useMemo的区别?useCallback和useMemo的使用场景有哪些?useCallback和useMemo是做什么的?

87930

React.memo() 和 useMemo() 的用法与区别

这就是 React.memo() 或 useMemo() 为我们提供性能优化所必需的地方。 现在,让我们探索 React.memo 以及 useMemo()。...什么是 useMemo()? React.memo() 是一个 HOC,而 useMemo() 是一个 React Hook。...使用 useMemo(),我们可以返回记忆值来避免函数的依赖项没有改变的情况下重新渲染。...为了在我们的代码中使用 useMemo(),React 开发者有一些建议给我们: 您可以依赖 useMemo() 作为性能优化,而不是语义保证 函数内部引用的每个值也应该出现在依赖项数组中 对于我们的下一个示例...总结:React.memo() 和 useMemo() 的主要区别 从上面的例子中,我们可以看到 React.memo() 和 useMemo() 之间的主要区别: React.memo() 是一个高阶组件

2.5K10

带你深入React 18源码之:useMemo、useCallback和memo

useMemo 接受两个参数:一个函数和一个依赖数组。当依赖数组中的值发生变化时,useMemo 会重新计算并返回新的值。否则,它将返回上一次计算的值。...就拿useMemo来举例:// 挂载时的调度器const HooksDispatcherOnMount: Dispatcher = { // useMemo 挂载时的执行函数 useMemo: mountMemo...useMemo: updateMemo, // other hooks...};// 其他生命周期调度器...上面代码可以看出,useMemo 在挂载时执行了的是 mountMemo, 而在更新数据时执行的是...这个函数在 useMemo 的实现中起到了关键作用,因为它决定了是否需要重新计算值。...useCallback 源码分析由于 useCallback 和 useMemo 实现一致,其原理都是通过areHookInputsEqual 函数进行依赖项比对,区别在于 useMemo 返回是新数据对象

1.2K51
领券