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

网页设计实训报告工作内容和步骤seo属于运营还是技术

网页设计实训报告工作内容和步骤,seo属于运营还是技术,wordpress单页淘宝客,网络科技公司取名创意现象 React 中,通常父组件的某个state发生改变,会引起父组件的重新渲染(和其他state的重新计算),从而会导致子组件的重新渲染(和其他非相关属性的重新计算) 问题一:如何避免因为某个…

现象

React 中,通常父组件的某个state发生改变,会引起父组件的重新渲染(和其他state的重新计算),从而会导致子组件的重新渲染(和其他非相关属性的重新计算)

  • 问题一:如何避免因为某个state变化,导致组件的中其他属性(state)的重新计算?

       方案:useMemo

  • 问题二:如何避免因为父组件的重新渲染,导致子组件中非相关属性的重新计算?

       方案:React.memo

结论

总结起来就一句话:

React.memo 用来限制组件重新渲染,而 useMemo 用来限制组件中的部分变量重新计算

(前者主要针对组件的渲染,后者则侧重于组件内的计算)

示例

React.memo:【常用于子组件】

它是一个高阶组件(Higher-Order Component,HOC),用于包装函数组件

当父组件重新渲染时,往往会触发子组件的重新渲染。但很多时候子组件的 props 并没有改变,此时子组件的重新渲染就是不必要的,会造成性能浪费。

经过 React.memo 包装的组件,React 会对其 props 进行浅比较,如果新 props 和旧 props 相同,组件不会重新渲染,而是复用之前的渲染结果。(浅比较只会检查对象或数组的引用是否相同,而不会深入比较其内部的属性或元素)

import React from 'react';// 使用 React.memo 包裹组件
const MyComponent = React.memo(({ data }) => {console.log('组件重新渲染');return <div>{data}</div>;
});const ParentComponent = () => {const [count, setCount] = React.useState(0);const someData = '固定数据';return (<div>{/* 如果子组件不用React.memo包裹,count变化后子组件也会重新渲染 */}<button onClick={() => setCount(count + 1)}>增加计数</button>{/* 只要 someData 不变,MyComponent 不会重新渲染 */}<MyComponent data={someData} /></div>);
};export default ParentComponent;

useMemo

这是一个 React Hook,只能用于函数组件内部

它主要用于缓存计算结果,根据传入的依赖项数组来判断是否需要重新计算缓存的值,避免在每次组件渲染时都进行重复的高开销计算。

如果计算属性作为子组件的 props 传递,且子组件使用 React.memo 进行了优化,在父组件使用 useMemo 可以确保计算属性的引用在依赖项不变时保持稳定,从而避免子组件不必要的重新渲染。

import React, { useState, useMemo, memo } from 'react';const ChildComponent = memo(({ data }) => {console.log('ChildComponent rendered');return <div>{data}</div>;
});const ParentComponent = () => {const [num, setNum] = useState(1);const calculatedData = useMemo(() => {return num * 2;}, [num]);return (<div><inputtype="number"value={num}onChange={(e) => setNum(Number(e.target.value))}/><ChildComponent data={calculatedData} /></div>);
};export default ParentComponent;

这里 calculatedData 通过 useMemo 缓存,当 num 不变时,calculatedData 的引用保持不变,ChildComponent 不会因为 props 的引用变化而重新渲染。

顺便提一下【useCallback】:

当父组件向子组件传递一个函数作为 props,并且子组件使用 React.memo 包裹时,useCallback 可以确保该函数的引用在依赖项不变时保持稳定,从而避免子组件因为函数引用的改变而进行不必要的重新渲染。

import React, { useState, useCallback, memo } from 'react';// 使用 React.memo 包裹子组件
const ChildComponent = memo(({ onClick }) => {console.log('ChildComponent 渲染');return <button onClick={onClick}>点击我</button>;
});const ParentComponent = () => {const [count, setCount] = useState(0);// 使用 useCallback 缓存函数const handleClick = useCallback(() => {setCount(count + 1);}, [count]);return (<div><p>计数: {count}</p><ChildComponent onClick={handleClick} /></div>);
};export default ParentComponent;
http://www.dtcms.com/wzjs/590641.html

相关文章:

  • 网站seo推广优化报价表网站建设满意度问卷调查
  • 建设网站比较好网站设计确认书
  • 福建有没有网站做鞋子一件代发qq官网登录
  • 做新闻微网站有哪些方面现在去横琴会变黄码吗
  • 贵阳做网站需要多少钱有哪些好的做问卷调查的网站好
  • 江西省美丽乡村建设公布网站网站换ip影响 百度
  • 北京建设教育协会的网站广州新业建设管理有限公司网站
  • 知名企业网站搭建新感觉全网价值营销服务商wordpress 搜索 提示
  • 灵感中心素材网站申请网站域名多少钱
  • 中国做的比较好的网站设计公司有哪些帮别人做网站收多少钱合适
  • 做360手机网站优化快苏州诗华洛网站建设
  • 一级a做爰片免费网站孕交视频app制作软件手机版免费下载
  • 做网站公司选哪家在线图片编辑器图怪兽
  • 河北工程大学网站开发成本网络营销推广案例
  • 有没有专门做游戏人物的绅士视频网站怎么夸一个网站开发公司
  • 公司的网站建设计入什么科目wordpress游客发言
  • 长沙县不错的建站按效果付费网页设计代码单词
  • 上海网站制作团队服务好的网站建设平台
  • 西安网站制作公司有哪家wordpress默认中文
  • 做网站 以图搜货检测WordPress网站的安全性
  • 南昌网站建设索王道下拉网页生成pdf不显示
  • 电脑如何建立网站网站可兼容移动端
  • 军用棉被门网站建设企业网站优化的原则
  • 织梦确定网站风格wordpress 增加语言包
  • 做网站的计划书个人网站建设在哪里
  • 适合平面设计师的网站微商如何引流与推广
  • 企业网站建设选题的依据及意义wordpress 没有样式表
  • 丹阳企业网站制作php网站开发框架
  • 亚马逊网站开发的技术做商城网站的企业
  • 怎么做中英文双语网站网站建设800元全包