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

dw做的网站成品wordpress 主题 标签

dw做的网站成品,wordpress 主题 标签,广州注册公司流程,做惠而浦售后网站赚钱目录 useMemo语法:使用注意事项 useCallback语法适用场景使用 useMemo useMemo 用于 缓存 计算结果,避免不必要的重新计算。它返回一个记忆化的值,仅在 依赖项变化时重新计算,否则会返回上次计算的结果。这样可以有效减少昂贵的计…

目录

  • useMemo
    • 语法:
    • 使用
    • 注意事项
  • useCallback
    • 语法
    • 适用场景
    • 使用

在这里插入图片描述

useMemo

useMemo
用于 缓存 计算结果,避免不必要的重新计算。它返回一个记忆化的值,仅在 依赖项变化时重新计算,否则会返回上次计算的结果。这样可以有效减少昂贵的计算或渲染。

语法:

let xxx = useMemo(callback,[dependencies])
  • 第一次渲染组件的时候,callback会执行
  • 后期只有依赖的状态值发生改变,callback才会再执行
  • 每一次会把callback执行的返回结果赋值给xxx
  • useMemo具备“计算缓存”,在依赖的状态值没有发生改变,callback没有触发执行的时候,xxx获取的是上一次计算出来的结果
  • 和Vue中的计算属性非常的类似!!

使用

  const Demo = function Demo() {console.log("渲染")let [supNum, setSupNum] = useState(10),[oppNum, setOppNum] = useState(5),[x, setX] = useState(0);let ratio = useMemo(() => {console.log(useMemo,'useMemo')let total = supNum + oppNum,ratio = '--';if (total > 0) ratio = (supNum / total * 100).toFixed(2) + '%';return ratio;}, [supNum, oppNum]);return <div className="vote-box"><div className="main"><p>支持人数:{supNum}</p><p>反对人数:{oppNum}</p><p>支持比率:{ratio}</p><p>x:{x}</p></div><div className="footer"><Button type="primary" onClick={() => setSupNum(supNum + 1)}>支持</Button><Button type="primary" danger onClick={() => setOppNum(oppNum + 1)}>反对</Button><Button onClick={() => setX(x + 1)}>干点别的事</Button></div></div>;
};

初始渲染,打印如下:
在这里插入图片描述

点击新增,打印如下:
在这里插入图片描述

点击干点别的事,打印如下:
在这里插入图片描述

注意事项

useMemo 不会提高性能的使用频率,它只是优化那些需要高开销计算的场景。如果计算本身就很轻量化,使用 useMemo 反而可能带来额外的性能开销。
useMemo 不会阻止组件重新渲染,它只是在渲染过程中缓存某些计算值。

useCallback

useCallback 用于 缓存函数,避免函数在每次渲染时都被重新创建。它返回一个记忆化的回调函数,只有当依赖项变化时,才会重新创建该函数。
虽然减少了堆内存的开辟,但是useCallback本身也有自己的处理逻辑和缓存机制,这个也消耗时间。

语法

  const xxx = useCallback(callback,[dependencies]) 
  • 组件第一次渲染,useCallback执行,创建一个函数“callback”,赋值给xxx
  • 组件后续每一次更新,判断依赖的状态值是否改变,如果改变,则重新创建新的函数堆,赋值给xxx;但是如果,依赖的状态没有更新「或者没有设置依赖“[]”」则xxx获取的一直是第一次创建的函数堆,不会创建新的函数出来!!
  • 或者说,基于useCallback,可以始终获取第一次创建函数的堆内存地址(或者说函数的引用)

适用场景

useCallback主要用于优化传递给子组件的函数,避免每次父组件重新渲染时,子组件因为接受到新的函数引用而重新渲染。

父组件更新时,传递给子组件的属性仅仅是一个函数「特点:基本应该算不变的」,不再让子组件也跟着更新。

1、传递给子组件的属性(函数),每一次需要是相同的堆内存地址(是一致的),基于useCallback处理。

2、在子组件内部也要做一个处理,验证父组件传递的属性是否发生改变,如果没有变化,则让子组件不能更新,有变化才需要更新。子组件需要判断传递过来的属性有没有变化,此时

  • 类组件可以使用React.PureComponent即可「在shouldComponentUpdate中对新老属性做了浅比较」
  • 函数组件可以使用React.memo函数,对新老传递的属性做比较,如果不一致,才会把函数组件执行,如果一致,则不让子组件更新。

使用

父组件

const Demo = function Demo() {let [x, setX] = useState(0);// const handle = () => { };  //第一次:0x001  第二次:0x101  第三次:0x201 ...const handle = useCallback(() => { }, []); //第一次:0x001  第二次:0x001  第三次:0x001 ...return <div className="vote-box"><Child handle={handle} /><div className="main"><p>{x}</p></div><div className="footer"><Button type="primary" onClick={() => setX(x + 1)}>累加</Button></div></div>;
};

子组件为类组件


class Child extends React.PureComponent {render() {console.log('Child Render');return <div>我是子组件</div>;}
} 

子组件为函数组件

const Child = React.memo(function Child(props) {console.log('Child Render');return <div>我是子组件</div>;
}); 

useCallback 对性能的优化主要体现在避免子组件不必要的重新渲染,尤其是在子组件是 React.memoshouldComponentUpdate 进行优化时。


文章转载自:

http://Fzm2mxPE.wsxxq.cn
http://4GZhqDp7.wsxxq.cn
http://l063KUi7.wsxxq.cn
http://CfX6JxnB.wsxxq.cn
http://EhMMJnuj.wsxxq.cn
http://tm71tOBy.wsxxq.cn
http://OSpzKoFY.wsxxq.cn
http://EkSSS0f0.wsxxq.cn
http://ZpfNOvwE.wsxxq.cn
http://ZdbLNufX.wsxxq.cn
http://BWRoXRAS.wsxxq.cn
http://3ozbwkyo.wsxxq.cn
http://Ej3dCz7H.wsxxq.cn
http://yG3BADub.wsxxq.cn
http://zDpLqhKD.wsxxq.cn
http://eMlWGWrA.wsxxq.cn
http://ShK6GbhQ.wsxxq.cn
http://7Gup9etc.wsxxq.cn
http://cHUpotRC.wsxxq.cn
http://OKbO7k1y.wsxxq.cn
http://GVz7wiGO.wsxxq.cn
http://sn9cTeA2.wsxxq.cn
http://qPKqk85p.wsxxq.cn
http://RnscSL1l.wsxxq.cn
http://un8yRtWt.wsxxq.cn
http://ufofHeDf.wsxxq.cn
http://Gbg7N6Eh.wsxxq.cn
http://pmgLek0Q.wsxxq.cn
http://VdBnOT1y.wsxxq.cn
http://Cu8qHxZf.wsxxq.cn
http://www.dtcms.com/wzjs/754300.html

相关文章:

  • 做一个医院网站多少钱网站策划 要求
  • 网站备案主体修改门户网站开发项目的风险
  • 高清设计网站推荐东莞大岭山森林公园
  • 做特产网站的原因哪个视频网站做视频最赚钱的
  • 开发一个网站 要多久专业商城网站建设价格低
  • 开鲁吧seo顾问多少钱
  • 做网站需要什么部门批准用幽默的语言来形容网站开发
  • dz网站建设器百度风云榜小说排行榜历届榜单
  • 网站怎么推广比较好旅游网站建设的结论
  • 网站200m虚拟主机能放多少东西社区网站的推广方案
  • 一个空间如何做多个网站360免费创建个人网站
  • 网站开发js路径联盟网站做的最好
  • 工商营业执照怎么网上年审营销软件知名乐云seo品牌
  • pc开奖网站建设重庆网络教育学院官网
  • 网站建设前期需要做出的准备手举牌战队图片在线制作
  • 青海wap网站建设比较好甘肃网站建设选哪家
  • 专业网站建设网站推广南阳网站运营招聘信息
  • 眼镜网站 wordpress模板做百度推广销售怎么样
  • 搜狐快站官网今天上海新闻综合新闻
  • 莱州市双语网站大型网站开发心得
  • 专门做电容的网站广西建设厅官方网站电话
  • 龙口建设网站海外贸易平台
  • 谷歌网站优化推广域名转接的流程
  • 建设银行网站怎么登陆密码忘了怎么办服装销售网站建设策划书
  • 网站开发 模板 c长沙网络推广外包费用
  • 怎样用一台电脑做代理 让别的电脑通过代理上几个网站群晖怎么做网站
  • 美丽女性网-大型女性门户网大型程序700m网站程序源码织梦石家庄工程官网
  • 素马网站制作开发东莞路桥投资建设公司官网
  • 建设银行登录网站想学习网站建设
  • 赤峰网站制作门户网站创新的方式有