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

logo图标素材网站学前端的三大忠告

logo图标素材网站,学前端的三大忠告,建设部门网站查询,网站子目录怎么做memo : 被memo包裹的组件,会浅层比较 props,不会深度比较,如果浅层比较相同,就不会重新渲染组件 默认是,无论怎么,都会重新渲染一遍子组件,, useMemo: 包裹一个函数&am…

memo : 被memo包裹的组件,会浅层比较 props,不会深度比较,如果浅层比较相同,就不会重新渲染组件

默认是,无论怎么,都会重新渲染一遍子组件,,

useMemo: 包裹一个函数,返回一个值,,只会在监听的状态改变的时候,才会重新执行一遍这个函数

这两个用来避免重新渲染,子组件,,或者重新执行一个复杂的函数,,,在不需要的情况下,,比如说,你的状态改变跟某个子组件没有关系,,就不用触发这个子组件的重新渲染

父组件:

import {useMemo, useState} from "react";
import ChildComponent from "./children/ChildComponent";function HeheMemo(){const [count, setCount] = useState(0)const [text, setText] = useState("")function expensiveResult(){console.log("recalculate...")// return Math.random().;return Math.floor(Math.random()*1000000)}const memoizedValueValue = useMemo(()=>expensiveResult(),[count])// 只有当count变化的时候,才会重新渲染子组件const memoizedChild = useMemo(()=>{return <ChildComponent count={count}/>},[count])return(<div><h1>expensive calculation</h1><ChildComponent count={count} /><div>count : {count}</div><div>expensive {memoizedValueValue} </div><button onClick={()=>setCount(count+1)}>btn</button><input type="text" onChange={e=>setText(e.target.value)}/></div>)
}export default HeheMemo

子组件:

import React, {memo} from "react";// interface ChildProps extends React.ComponentProps<any>interface ChildProps{count:number
}const Child = memo((props:ChildProps)=>{console.log("我被渲染了")return (<div> child component --{props.count} </div>)
})export default Child
useRef

setState 会触发页面的重新渲染,,就会重新执行函数,,,,像那种计时器,如果第二次渲染就变了,,需要保证是同一个定时器,,使用useRef,,
useEffect()只会在依赖变化的时候重新执行,,如果依赖没有变化,他取得就是最开始的那个状态,,,闭包中的函数和变量是静态的,,函数捕获了定义时的变量环境,,后续无法感知变量的变化

import React, {Component, useEffect, useRef, useState} from 'react';function Hello02() {const [text, setText] = useState("")function handleClick(){console.log("click with text"+text)}const clickRef = useRef<Function>(null);clickRef.current = handleClick/*** 初次渲染 ===》   clickRef被赋值,,* 后续渲染 ===》 setText() ==> 更新状态,触发再次渲染 ==》 clickRef重新被赋值*** 闭包中的函数和变量是静态的,,函数捕获了定义时的变量环境,,后续无法感知变量的变化*/useEffect(()=>{const interval =   setInterval(()=>{clickRef.current?.()},1000)return ()=>clearInterval(interval)},[])return (<div><input type="text" value={text} onChange={e=>setText(e.target.value)}/><button onClick={handleClick}>btn</button></div>)
}export default Hello02;

useState:可以获取之前的状态

    const startTimer = ()=>{if (!timeRef.current){timeRef.current = window.setInterval(()=>{setCount(prevState => prevState+1)},1000)}}
useCallback

父组件在传递回调函数给子组件的时候,,如果父组件更改了状态,重新渲染,,这个函数会被重新创建,返回一个新的函数,,这个新的函数的引用,,让props改变了,导致子组件,,即使使用了 memo,,也会重新渲染

使用 useCallback记忆化回调函数,,这个函数就不会返回新的引用

import {memo, useCallback, useState} from "react";
interface ChildProps{onClick:()=>void
}
const Child = memo(({onClick}:ChildProps)=>{console.log("child render...")return (<div onClick={onClick}>child</div>)
})function Parent(){const [count, setCount] = useState(0)// function handleClick(){//     console.log("click")// }const handleClick = useCallback(()=>{console.log("click")},[])return (<div><p>{count}</p><button onClick={e=>setCount(count+1)}>btn</button><Child onClick={handleClick}></Child></div>)
}export default Parent

文章转载自:

http://jG2XA3iq.wrLcy.cn
http://Sw16K8kP.wrLcy.cn
http://fJSBiWx1.wrLcy.cn
http://IfLXJyXl.wrLcy.cn
http://kbaysyB5.wrLcy.cn
http://IRC0Gwar.wrLcy.cn
http://cqBvkuHT.wrLcy.cn
http://kaKdUdGy.wrLcy.cn
http://4N3X6Q2Y.wrLcy.cn
http://K9VDSmz8.wrLcy.cn
http://x3OMHIkT.wrLcy.cn
http://cR0TtZMS.wrLcy.cn
http://r8DeDEnB.wrLcy.cn
http://wCYZQrpY.wrLcy.cn
http://FP4IM5oY.wrLcy.cn
http://Dd6dmRwA.wrLcy.cn
http://O9bDTsH1.wrLcy.cn
http://6pI14U3y.wrLcy.cn
http://HWc3N5zU.wrLcy.cn
http://KwLjSzo3.wrLcy.cn
http://1gUaflxA.wrLcy.cn
http://qgVVUk6S.wrLcy.cn
http://WOu99xxj.wrLcy.cn
http://VasVPYfQ.wrLcy.cn
http://WtbAgSJ3.wrLcy.cn
http://59O5rGf8.wrLcy.cn
http://gUGkXnRD.wrLcy.cn
http://FyBy9srQ.wrLcy.cn
http://9lmgVWfR.wrLcy.cn
http://DQ2Rz8vx.wrLcy.cn
http://www.dtcms.com/wzjs/626202.html

相关文章:

  • 网站运维服务内容wordpress全局阴影
  • 哪种语言做的网站好制作网页的教程
  • 南京做公司网站的公司wordpress 作者标签
  • 营销型网站建设方面的书品质好的客户管理系统
  • 网站设计制作费用多少汽车之家网页版官网找车
  • 网页设计与网站的关系ui培训班好
  • 用vue做商城网站常用的js如何用电脑做网站服务器
  • 购物网站功能模块说明郑州网站建设公司e00
  • 旅游网站建设经费预算国外做鞋子的网站
  • 婺源做微信网站怎么做广告宣传最有效
  • 深圳网站设计 商城检察网站建设请示
  • 网站开发主要职责软件网站建设公司
  • 主办单位性质与网站名称不符青海百度关键词seo
  • 怎样找需要做网站客户wordpress设置
  • 电子商务平台及核心技术网站优化怎么学
  • wordpress远程数据库cpu游戏优化加速软件
  • 手机网站图片轮播wordpress邀请码注册
  • 上海华东建设发展设计有限公司网站app下载我的订单
  • 北京学会网站建设信息网络工程师
  • 用wordpress建网站河北邯郸地震最新消息今天
  • 莘县做网站推广世界网络公司排名前十
  • 网站运营托管青岛百度推广多少钱
  • 幸运28网站代理怎么做atp最新排名
  • 丽水网站建设专业的公司电影网站开发api
  • 做网站的网站建设的经过的阶段
  • asp网站图片备案网站多长时间
  • 施工建设集团网站wordpress pagelines
  • 万网做网站花多少钱六安新安人才网
  • 现在手机网站设计四川省建设网站评标专家考试
  • 网站如何做竞价seo实战密码