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

关键词排行优化网站西昌市住房与城乡建设厅网站

关键词排行优化网站,西昌市住房与城乡建设厅网站,企业推广网络营销,湖南建设人才网官网useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook#xff0c;返回一个函数的 memoized的值#xff1b; 2、如果多次传入的依赖项不变#xff0c;那么多次定义的时候#xff0c;返回的值是相同的,防止频繁触发更新#xff1b; 3、多应用在 父组件为函…useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook返回一个函数的 memoized的值 2、如果多次传入的依赖项不变那么多次定义的时候返回的值是相同的,防止频繁触发更新 3、多应用在 父组件为函数式组件子组件也为函数式组件并且子组件被 React.memo() 包裹着 4、主要用于性能优化即使不适用useCallback代码也要能正常运行 useCallback 基本用法 写法 let memoizedCallback useCallback(fn, dependencies)第一个参数fn 是想要缓存的函数可以接收任何参数并返回任何值React 中会在初始化时候调用而不是渲染时候调用 当执行下一次渲染时候如何出入的依赖值 dependencies 相同则会返回相同的函数 memoizedCallback 相反 若依赖值 dependencies 不同则会返回新的函数 memoizedCallback但是 React 不会主动去调用 memoizedCallback函数需要开发者自己决定什么时候执行调用函数 第二个参数 dependencies是否要更新 fn 的所有响应式值的一个列表可以传入空数组:[] 响应式值包括 props、state和所有在你组件内部直接声明的变量和函数。 useCallback 示例 1、为什么要使用 useCallback 当我们传入相同值的时候不管是对象类型还是基本类型都不希望子组件进行更新渲染 在不需要大量渲染的时候性能还可以但是当数据量大的时候若相同的数据也触发子组件渲染则会出现性能问题 2、在不使用 useCallback() 的时候 每次触发 handleAdd 事件时候都会渲染子组件 ChildA // 父组件 import { useCallback, useState} from react import ChildA from ./childA export default function MyCallBack() {const [useInfo, setUseInfo] useState({name: Andy,age: 18})const myCallback () {console.log(useCallback)return useInfo.name}const handleAdd () {setUseInfo({name: Andy,age: 18})}return (divh3This is a MyCallBack demo .---{count}/h3button onClick{handleAdd}add/buttonhr /ChildA onAddCount{myCallback} /ChildA/div) } // 子组件 import React, { memo } from reactconst ChildA memo(({onAddCount}) {console.log(ChildA 组件更新了, count)return (divh3This is a ChildA demo ./h3button onClick{onAddCount}子组件/buttonhr //div) })当我们点击 add 按钮时候发现页面打印 “ChildA 组件更新了”说明传入相同的数据时候会触发子组件渲染如图所示 3、使用 useCallback 时候 import { useCallback,useState} from react import ChildA from ./childA export default function MyCallBack() {console.log(父组件callback)const [count, setCount] useState(0)const [useInfo, setUseInfo] useState({name: Andy,age: 18})const myCallback useCallback(() {console.log(useCallback)return useInfo.name}, [useInfo.name])const handleAdd () {setUseInfo({name: Andy,age: 18})}return (divh3This is a MyCallBack demo .---{count}/h3button onClick{handleAdd}add/buttonhr /ChildA onAddCount{myCallback} /ChildA/div) } // 子组件 import { memo } from react // eslint-disable-next-line react/display-name const ChildA memo(({useInfo, count, onAddCount}) {console.log(ChildA 组件更新了, count)const handleChangeName () {setName(Tom)}return (divh3This is a ChildA demo ./h3h4{count}/h4h4姓名{useInfo?.name || --}/h4h4年龄{useInfo?.age || --}/h4button onClick{onAddCount}子组件/buttonhr //div) }) export default ChildA 在点击 add 按钮 更新相同数据时候只有父组件渲染子组件不会再渲染如图 总结 若要实现 传入相同数据时候只更新当前组件而子组件不进行渲染需使用 useCallback() 和 memo 来处理
http://www.hkea.cn/news/14270743/

相关文章:

  • 可以和朋友合资做网站吗河北区做网站公司
  • 四川建设主管部门网站找人做网站网站
  • 做好网站外链建设的最新方法网站设计平台 动易
  • 广西住房建设厅网站首页贵州省建设网官方网站
  • 建站免费建站平台加强普法网站和普法网络集群建设
  • 长春找工作哪个网站好扶贫工作网站怎么做
  • 制作网页网站教程专做热血电影的网站
  • 长治电商平台网站wordpress主题恶意代码
  • 西安知名网站建设公司做个网站app吗
  • 网站管理员怎么做wordpress添加边框
  • 怎么查有做网站的公司有哪些了解网站建设管理
  • 云南安宁做网站的公司中国互联网企业排名前十名
  • python wordpress建站第一次做网站怎么样下手
  • 给公司做网站要多少钱中国科技创新十大成果
  • 青岛网站设计建设国外免费服务器平台
  • 网站建设服务开发我想建立个网站怎么弄
  • 北京网站设计与网站制作h5手机模板网站
  • 沧州网站建设培训字体设计在线生成免费
  • 网站设计的公司排名烟台网站制作方案定制
  • 网站外链建设布局dw网站制作的一般流程
  • 贵州高端建设网站什么是网络营销?有何特点
  • 政务类网站wordpress 获取随机文章
  • 贵阳百度做网站电话个人卖货平台
  • 怎么做网站赚流量谷歌搜索引擎免费入口2022
  • 开发什么软件有市场优化大师 win10下载
  • 黄冈网站建设做网站需要商标注册吗
  • 美食网站开发毕业设计php网站开发多少钱
  • 电商网站如何做山东平台网站建设价格
  • 服装网站建设发展状况详情页设计英文翻译
  • 建设网站考虑因素最大的中文搜索引擎