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

网站模板带后台下载大同住房和城乡建设网站

网站模板带后台下载,大同住房和城乡建设网站,个人网站做公司网站,品牌网站设计制作一般多少钱概述 useCallback缓存的是一个函数#xff0c;主要用于性能优化!!! 基本用法 如何进行性能的优化呢#xff1f; useCallback会返回一个函数的 memoized#xff08;记忆的#xff09; 值#xff1b;在依赖不变的情况下#xff0c;多次定义的时候#xff0c;返回的值是…概述 useCallback缓存的是一个函数主要用于性能优化!!! 基本用法 如何进行性能的优化呢 useCallback会返回一个函数的 memoized记忆的 值在依赖不变的情况下多次定义的时候返回的值是相同的 语法 const memoizedCallback useCallback(() {doSomething(a, b);},[a, b], ); 通常使用useCallback的目的是不希望子组件进行多次渲染并不是为了函数进行缓存在使用 React.memo 时对于对象类型的 props只会比较引用浅对比。但是因为组件每次更新都会创建新的 props 值比如新的对象、事件处理程序等函数组件的特性。这就导致React.memo 在处理对象类型的 props 时会失效每次的 props 都是新对象。但是我们还是想让 React.memo 在处理对象类型的 props 时也有效。为了让 React.memo 处理对象类型的 props 有效只要在组件更新期间保持对象类型引用相等即可 这时候就要用到以下两个 Hooks useCallback Hook记住函数的引用在组件每次更新时返回相同引用的函数。useMemo Hook记住任意数据数值、对象、函数等在组件每次更新时返回相同引用的数据【功能之一】 示例 import {useCallback, useState} from react;export default function UseCallback() {let [firstName, setFirstName] useState(张);let [lastName, setLastName] useState(三);let getFullName useCallback(() {return firstName lastName}, [firstName, lastName])return (div姓名{getFullName()}/div) } 缓存了一个函数可以在组件中使用!!! 演示示例 使用场景在使用 React.memo 时为了组件每次更新时都能获取到相同引用的函数就要用到 useCallback Hook 注意需要配合 React.memo 高阶函数一起使用。 作用记忆传入的回调函数这个被记住的回调函数会一直生效直到依赖项发生改变 解释 第一个参数必选需要被记忆的回调函数。第二个参数必选依赖项数组用于指定回调函数中依赖用到的数据类似于 useEffect 的第二个参数。即使没有依赖也得传入空数组[]此时useCallback 记住的回调函数就会一直生效。返回值useCallback 记住的回调函数。useCallback 记住的回调函数会一直生效或者说会一直返回同一个回调函数直到依赖项发生改变。 import React, { memo, useState, useCallback, useRef } from reactconst App memo(() {const [count, setCount] useState(0)const [money, setMoney] useState(1000)// 初始写法const help useCallback(() {setCount(count - 1)}, [count])// 优化写法useRef--在组件多次渲染时返回的是同一个值// 这种写法容易陷入闭包陷阱const help useCallback(() {setCount(count - 1)}, [])// 推荐优化写法const countRef useRef();countRef.current count;const help useCallback(() {setCount(countRef.current - 1)}, [])return (divh1计数器/h1div豆豆被打了{count}次/divdiv金钱{money}/divbutton onClick{() setCount(count 1)}打豆豆/buttonbutton onClick{() setMoney(money 100)}加钱/buttonhr /{count 5 ? DouDou count{count} help{help}/DouDou : 豆豆被打死了}/div) })export default App Doudou.jsx // 子组件 const DouDou memo(({ count, help }) {console.log(豆豆组件渲染)return (divh3我是豆豆组件{count}/h3button onClick{help}续命/button/div) }) export default Doudou 总结 要配合  memo 不然可能反而会降低性能 当需要将一个函数传递给子组件最好使用 useCallback 进行优化将优化之后的函数传递给子组件当需要将一个函数传递给子组件时最好使用useCallback进行优化将优化之后的函数传递给子组件 尽量不要使用 useCallback 我建议在项目中尽量不要用 useCallback大部分场景下不仅没有提升性能反而让代码可读性变的很差。 useCallback 大部分场景没有提升性能 useCallback 可以记住函数避免函数重复生成这样函数在传递给子组件时可以避免子组件重复渲染提高性能。 基于以上认知很多人包括我自己在写代码时只要是个函数都加个 useCallback是你么反正我以前是。 但我们要注意提高性能还必须有另外一个条件子组件必须使用了 shouldComponentUpdate 或者 来忽略同样的参数重复渲染。 假如 ExpensiveComponent 组件只是一个普通组件是没有任何用的。比如下面这样 必须通过 React.memo 包裹 ExpensiveComponent 才会避免参数不变的情况下的重复渲染提高性能。 所以useCallback 是要和 shouldComponentUpdate/React.memo 配套使用的你用对了吗当然我建议一般项目中不用考虑性能优化的问题也就是不要使用 useCallback 了除非有个别非常复杂的组件单独使用即可。 useCallback 让代码可读性变差 我看到过一些代码使用 useCallback 后大概长这样 在上面的代码中变量依赖一层一层传递最终要判断具体哪些变量变化会触发 useEffect 执行是一件很头疼的事情。 我期望不要用 useCallback直接裸写函数就好 在 useEffect 存在延迟调用的场景下可能造成闭包问题那通过咱们万能的方法就能解决 对 useCallback 的建议就一句话没事别用 useCallback。
http://www.w-s-a.com/news/559380/

相关文章:

  • 帮人做彩票网站支付接口网上请人做软件的网站
  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些