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

固戍网站建设用哪个网站做相册视频文件

固戍网站建设,用哪个网站做相册视频文件,云主机申请,个人网页设计模版概述 useMemo 是React 中的一个HOOK,用于根据依赖在每次渲染时候缓存计算结果; 大白话就是,只有依赖项发生变化时候,才会重新渲染为新计算的值,否则就还是取原来的值,有点类似 vue 中的 computed 计算属性…

概述

useMemo 是React 中的一个HOOK,用于根据依赖在每次渲染时候缓存计算结果
大白话就是,只有依赖项发生变化时候,才会重新渲染为新计算的值,否则就还是取原来的值,有点类似 vue 中的 computed 计算属性,注意与 useEffect 区分;

写法

const value = useMemo(fnc, [a,b])

第一个参数fnc 是一个函数,用于根据 依赖项 a、b变化时候触发计算得出新值,必须是一个没有任何参数的纯函数,可以返回任意类型;若 a、b没有变化,则React 返回与上次相同的值;若 a、b 发生改变,则会返回新的值;
第二个参数[a、b] 是一个数组,函数 fnc中计算所依赖的值,这个数组中若不传入具体变量,而是传入 空数组[],那么会在组件每次更新时候重新渲染;

这种缓存值的方式叫做 记忆化 (memoization), 这也是这个Hook 称为 useMemo 的由来

使用场景

1、当我们在 useMemo 中的代码运行很慢,通过使用 useMemo 运行效率得到显著提升;
2、将计算结果作为 props 传递给包裹在 memo 中的组件。当计算结果没有改变时,你会想跳过重新渲染。记忆化让组件仅在依赖项不同时才重新渲染。
3、你传递的值稍后用作某些 Hook 的依赖项。例如,也许另一个 useMemo 计算值依赖它,或者 useEffect 依赖这个值。

例如:
将计算结果作为 props 传给子组件

// 父组件
import React, {useMemo, useState} from 'react'
import ChildA from './childA'
export default function MyMemo() {const [firstName, setFirstName] = useState('Andy')const [lastName, setLastName] = useState('Li')const [count, setCount] = useState(0)const fullName = useMemo(() => {console.log('==useMemo==')return firstName +'' + lastName}, [firstName, lastName]) // 第二个参数是数组,表示fullName 依赖 firstName 和 lastName 的值,只有 firstName 和 lastName 值发生变化,fullName 才重新计算const handleChangeName = (e, type) => {console.log('==handleChangeName==', e)// [`set${type}`](e.target.value)// if (type === 'FirstName') {//     setFirstName(e.target.value)// } else {//     setLastName(e.target.value)// }}const handleChangeFirstName = () => {console.log('==更新第一个名称=')setCount(count+1)setFirstName(11)}return (<div><input type="text"  value={firstName} onChange={(e) => handleChangeName(e, 'FirstName')} /><p>点击了{count}</p><button onClick={handleChangeFirstName}>firstName</button><br/><input type="text" value={lastName} onChange={(e) => handleChangeName(e, 'LastName')} /><hr /><ChildA fullName={fullName}></ChildA></div>)
}
// 子组件
import React, {memo, useState} from 'react'
const ChildA = memo(({fullName}) =>{console.log('=render=ChildA==fullName----', fullName)return (<div><p>全称:{fullName}</p></div>)
})
export default ChildA

在这里插入图片描述
通过 log日志,我们可以发现,共计点击了 firstName 按钮 18次;只有在初始化第一次点击时候才会渲染 子组件;
因为第一次点击将 firstName 更新为 11;之后的点击传入相同的值 11,导致 useMemo 返回的 fullName 是相同的,故不再进行渲染

而当我们使用 useEffect 时候,会每次都更新子组件

注意:

1、useMemo 只能作为组件代码性能优化使用,如果在不使用 useMemo时,代码无法正常运行,那么我们需要先排查问题,之后再使用 useMemo
2、避免不必要的更新 state 的 Effect;React 中很多的性能是由于其自身的更新链导致的,所以我们要避免重复的更新同一个组件
3、尽可能的减少依赖项,避免过多的依赖导致代码难以理解,难以追踪问题;我们可以将依赖项 设置成 state;
4、我们应该减少状态的提升,多使用state,而不是滥用useMemo来处理性能;

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

相关文章:

  • 网站建设ps模板大连品尚茗居装修公司怎么样
  • 建设用地规划许可证在哪个网站查询张家港本地论坛
  • 文字字体是什么网站三台县城乡建设网网站
  • 东莞南城网站建设价格公司网站域名备案
  • dwcc2018怎么做网站长沙seo排名优化公司
  • 如何知道自己网站主机竞价移动网站
  • 网站建设用户体验工业互联网平台首先要提高数据的挖掘能力
  • 怎么做相册网站佛山最好的网站建设公司
  • 做资源教程网站网络培训ppt
  • 昆明网页建站平台樟木头网站仿做
  • 虾皮这种网站根本不值得做专业的网站建设报价
  • 网站网站制作费用网站做301
  • 视频网站建设公司排名87网站一起做
  • 网站建设 华博互联宸建设计网站
  • 上海怎样建设网站个人怎么建立网站
  • 最牛的视频网站建设水利局网站建设整改报告
  • 网站建设吴江织梦搬家 网站空白
  • 滨州网站建设模板建设沈阳企业网站制作公司
  • 90设计网站最便宜终身安微省建设庁官方网站
  • 温州做网站制作哪家好驻马店网站开发
  • 成都销售型网站网站访问量统计怎么做
  • 网站建设功能要求企业宣传片拍摄公司
  • 公司做公司网站广告修改网站dns
  • 建站seo赚钱天津网络推广培训
  • 赤峰做网站建设的企业长沙景点有哪些
  • 用typecho做的网站网站文件夹结构
  • 公司网站的备案号是如何链接的商城网站建设可以吗
  • 网站开发项目计划书湖南建设网站公司
  • 网站诊断书微网站 .net
  • 怎样创办网站绍兴网站建设哪好