当前位置: 首页 > news >正文

手机刷机网站大全环境设计网站推荐

手机刷机网站大全,环境设计网站推荐,网站建设优化公司呼和浩特,吴江高端网站建设useMemo 、React.memo、useCallback 一、useMemo 基本用法 缓存数据,模拟 Vue 中的计算属性。 同样useMemo跟vue中component一样,也是有缓存的,会将结果缓存下来 import React, { useMemo, useState } from react;export default functio…

useMemo 、React.memo、useCallback

一、useMemo 基本用法

缓存数据,模拟 Vue 中的计算属性。

同样useMemo跟vue中component一样,也是有缓存的,会将结果缓存下来

import React, { useMemo, useState } from 'react';export default function UseMemo() {const [count, setCount] = useState(0);缓存 sum 的值useMemo  使用的时候,第二个参数是个数组,里面必须要传递所依赖的值,才可实现计算属性的功能例如上面此生依赖count 那么就需要把 count传递到数组里面去注意:1、如果第二个参数不传递,useMemo也能执行,也会实现技术属性的效果,但是建议还是传递,这样会更加准确一点2、如果依赖了两个值 比如:number1  number,但是数组里面只传递number1的话 如果number2 也发生变化 此时useMemo是不会执行的,因为没有传递number2告诉useMemo依赖了它就是说const sum = useMemo(() => {return count + count;}, [count]) return (<><p>父组件:{sum}</p><button onClick={() => setCount(count + 1)}>+1</button></>)
}
第一个参数(回调函数)第二个参数(依赖)
1.组件首次渲染(函数首次执行),DOM挂载前执行;2.每次组件更新前(函数重新执行),先执行useMemo,再更新DMO
1.组件首次渲染(函数首次执行),DOM挂载前执行[]
1.组件首次渲染(函数首次执行),DOM挂载前执行;2.每次依赖更新时,每次组件更新前(函数重新执行),先执行useMemo,再更新DMO[sate]

二、React.memo()

在 React 中,默认情况下,父组件更新时,无论子组件是否发生改变,子组件也会更新。

但是,我们更希望:只要子组件用到的数据没有发生改变,即使父组件更新,子组件也不更新。

我们可以用 React.memo 把子组件包裹起来:

function Child(props) {}
export default React.memo(Child);

React.memo :

1、可以用来缓存组件:memo 方法会去判断子组件中的数据(state、props)是否发生改变,只有真正当子组件内部的数据发生改变时,子组件才会更新。

2、但是如果传递给子组件中的值有函数的情况,父组件更新,无论子组件中props的值没变化依旧会触发子组件的更新,是因为:在react函数组件中,父组件值变化,会全部更新父组件,那么就相当于传递给子组件的函数在更新的时候重新被创建了,所以React.memo此时就会检测到props中的函数发生了变化,正常触发子组件的更新。所以useCallback这个hook的作用就体现出来了 详见下面第三点

三、useCallback

useCallback 用来缓存函数。基本语法如下:

import React, { useCallback } from 'react';export default function UseMemo() {const sayHello = () => {console.log('hello')}const cbSayHello = useCallback(sayHello, [])return (// ...)
}

为什么需要缓存函数呢,这个就和 React.memo() 有关系了。

我们用 React.memo() 包裹子组件,是希望子组件能够避免一些不必要的更新。但是,如果父组件传递的 props 是一个函数,那么每次父组件重新渲染时,memo 都会判断 props 的函数是一个新的函数,因此就会更新子组件。

所以这个时候,我们就可以在父组件中通过 useCallback() 将函数缓存下来,再将缓存后的函数传递给子组件。

import React, { useCallback } from 'react';export default function UseMemo() {const sayHello = () => {console.log('hello')}const cbSayHello = useCallback(sayHello, [])return (<Child sayHello={cbSayHello}></Child>)
}

这样处理后,即使父组件发生改变,只要子组件中用到的数据或方法没有变,子组件都不会更新。

http://www.yayakq.cn/news/967802/

相关文章:

  • seo如何做网站建设wordpress到day one
  • 买毕业设计的网站网站需要哪些
  • 建设银行网站怎么登陆不了了长沙网站排名技巧
  • 网站建设 好公司开封网站优化公司
  • 北京免费建站模板als冰桶挑战赛的网络营销方式
  • 岳阳手机网站制作网易邮箱注册
  • 开发公司网站公司crm订单管理系统
  • 肃宁县网站建设网站建设 中企动力成都
  • 网站seo优化检测免费获取ppt模板的网站
  • 广州app网站开发网站开发与管理心得体会
  • 海口制作网站企业摘抄一篇新闻
  • 浙江省住房和城乡建设部网站吉林网站制作
  • 网站代备案便宜wordpress 编辑器调用
  • 大连网站建设策划个人可以建设网站吗
  • 番禺建设网站策划wordpress最强的教育网站
  • 网上做网站赚钱主机类型wordpress
  • 莆田网站建设优化正规网站建设服务
  • 公司网站的建设软件开发模型包括哪五种
  • 商务网站模块设计时前台基础设施建设不包括wordpress第三方登录插件
  • 安顺网站建设公司做问卷赚钱最好似网站
  • 下载官方购物网站网络优化论文
  • 网站制作方案大全中国排名第一的策划公司
  • 做英语翻译赚钱的网站网上写作最好的网站
  • 企业网站搭建哪家好做钓鱼网站怎么赚钱
  • 做网站要准备的资料中山好的做网站的公司
  • 沈阳高端网站定制公司标志设计
  • 速升网站网站优化与推广
  • 大连p2p网站建设电子商务视觉设计
  • 北京燕化工程建设有限公司网站上传网站教程
  • 邯郸网站设计怎么开发提升seo搜索排名