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

做企业网站服务器深圳团购网站设计价格

做企业网站服务器,深圳团购网站设计价格,自己做的html网页怎么发布,网站开发项目分析模板1 useCallback useMemo 和 useCallback 接收的参数都是一样,都是在其依赖项发生变化后才执行,都是返回缓存的值,区别在于 useMemo 返回的是函数运行的结果,useCallback 返回的是函数。 当需要使用 useCallback 的情况通常包括以…

1 useCallback

useMemo 和 useCallback 接收的参数都是一样,都是在其依赖项发生变化后才执行,都是返回缓存的值,区别在于 useMemo 返回的是函数运行的结果,useCallback 返回的是函数。

当需要使用 useCallback 的情况通常包括以下几种情形:

(1)将回调函数作为 prop 传递给子组件:在这种情况下,使用 useCallback 可以确保子组件在父组件重新渲染时不会不必要地重新渲染。

import React, { useCallback } from 'react';const ParentComponent = () => {const handleClick = useCallback(() => {console.log('Button clicked!');}, []);return <ChildComponent onClick={handleClick} />;
};const ChildComponent = ({ onClick }) => {return <button onClick={onClick}>Click me</button>;
};

(2)优化依赖项变化引起的重新渲染:在 useEffect 中使用 useCallback 可以避免不必要的重新执行。

import React, { useState, useEffect, useCallback } from 'react';const ExampleComponent = () => {const [count, setCount] = useState(0);const handleIncrement = useCallback(() => {setCount(count + 1);}, [count]);useEffect(() => {console.log('Count changed:', count);}, [handleIncrement]);return (<div><p>Count: {count}</p><button onClick={handleIncrement}>Increment</button></div>);
};

(3)避免不必要的函数创建:在需要动态生成函数的场景下,使用 useCallback 缓存函数。

import React, { useCallback } from 'react';const ExampleComponent = () => {const generateRandomNumber = useCallback(() => {return Math.floor(Math.random() * 100);}, []);return (<div><p>Random number: {generateRandomNumber()}</p></div>);
};

注意: useCallBack不要每个函数都包一下,否则就会变成反向优化,useCallBack本身就是需要一定性能的
useCallBack并不能阻止函数重新创建,它只能通过依赖决定返回新的函数还是旧的函数,从而在依赖不变的情况下保证函数地址不变。useCallBack你真的知道怎么用吗。

2 useMemo

useMemo 可以在函数组件 render 上下文中同步执行一个函数逻辑,这个函数的返回值可以作为一个新的状态缓存起来。

场景一:在一些场景下,需要在函数组件中进行大量的逻辑计算,那么我们不期望每一次函数组件渲染都执行这些复杂的计算逻辑,所以就需要在 useMemo 的回调函数中执行这些逻辑,然后把得到的产物(计算结果)缓存起来就可以了。
场景二:React 在整个更新流程中,diff 起到了决定性的作用,比如 Context 中的 provider 通过 diff value 来判断是否更新

缓存计算结果:

function Scope(){const style = useMemo(()=>{let computedStyle = {}// 经过大量的计算return computedStyle},[])return <div style={style} ></div>
}

缓存组件,减少子组件 render 次数:

function Scope ({ children }){const renderChild = useMemo(()=>{ children()  },[ children ])return <div>{ renderChild } </div>
}

参考

「React 进阶」 React 全部 Hooks 使用大全 (包含 React v18 版本 )

http://www.bjxfkj.com.cn/article/107998.html

相关文章:

  • 本地郑州网站建设营销网站定制公司
  • 贵阳网站建设托管谁帮58同城做的网站吗
  • php 微信 网站开发如何搭建购物平台
  • 网站首页图片大全装修网站开发思路
  • 做告状网站高德地图在海外能用吗
  • 怎么做自己的html网站宣化网站制作公司
  • 做配色的网站竭诚网络网站建设开发
  • 网站界面设计考试建设项目验收公示网站
  • 访客留言网站云主机网站源码
  • 建设网站图片大全做框架表格网站
  • 光谷网站建设公司响应式网站 英语
  • 网上免费做网站建设厅电工证查询网站
  • 网站建设与管理试卷中国最新军事新闻50字
  • ssh框架做音乐网站哈尔滨seo网络推广
  • 建设一中校园网站一级a做爰网站免费
  • 帮忙做任务网站哈尔滨网站制作多少钱
  • 由音乐学院做的网站云主机搭建wordpress
  • 有关网站建设账务处理免费简单网页制作成品
  • 阿里巴巴电子商务网站网站建设文书
  • 东莞市官网网站建设自媒体视频剪辑去哪里学
  • 建一个网站需要什么条件浪网站制作
  • 图片库网站建设花都网站开发公司
  • 类似情侣空间的网站开发织梦资讯门户网站模板
  • 免费素材下载网站有哪些做a的视频在线观看网站
  • 商城开发网站建设开发门户型网站有哪些
  • 温州哪里有网站建设制作书签图片大全简单漂亮
  • 宿迁宿豫网站建设广东建筑信息平台
  • 建立了公司门户网站做影视会员网站
  • 瑞安门户网站建设嘉兴路街道网站建设
  • 中国建设银行网站能查流水吗北京装修公司电话名单