| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> React 中 memo useMemo useCallback 到底该怎么用 -> 正文阅读 |
|
[JavaScript知识库]React 中 memo useMemo useCallback 到底该怎么用 |
目录 React.memo() 和 useMemo() 的主要区别
React.memo怎么用
下面我们看一个示例:
点击父组件:? 可以看到控制台中输出了子组件里的打印,表示子组件 rerender 了,如果子组件中有庞大的 dom 结构和计算,那是非常消耗性能的事,通过 memo 我们可以对比 render 前后的 prop 变化,如果没有变化就不会重新 render 子组件:
把子组件通过 memo 包裹后就不会因为父组件更新导致的 render 了? ? React.useMemo怎么用
React.memo() 和 useMemo() 的主要区别从上面的例子中,我们可以看到
虽然 memoization 似乎是一个可以随处使用的巧妙小技巧,但只有在绝对需要这些性能提升时才应该使用它。 Memoization 会占用运行它的机器上的内存空间,因此可能会导致意想不到的效果。 React.useCallback 怎么用我们看一下下面这个示例:
在上面的例子中,我们把子组件通过 React.memo 包起来了,希望在父组件更新的时候,子组件不会 再次render,那么会和我们想的一样吗?
useCallback 需要传入两个参数
useCallback 返回一个 memoized 回调函数。在依赖参数不变的情况下,返回的回调函数是同一个引用地址
上面就是没有使用 useCallBack 的使用场景,现在我们知道了,把要传递的函数参数通过 useCallBack 包裹一层,这样返回的回调函数就是同一个引用地址,这样子组件就不会 rerender 了:
现在在点击父组件后,子组件就不会再 rerender 了。? 大伙现在应该明白了useCallback的作用了,它主要用来配合memo用于优化子组件的渲染次数 memo,useMemo,useCallback的区别
防止不必要的 effect如果一个值被 useEffect 依赖,那它可能需要被缓存,这样可以避免重复执行 effect。
useCallback 同理:
当变量直接或者通过依赖链成为 useEffect 的依赖项时,那它可能需要被缓存。这也是 useMemo 和 useCallback 得基本用法之一。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 17:49:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |