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

网站怎么做免费推广方案免费企业名录

网站怎么做免费推广方案,免费企业名录,软件下载网站怎么做,线上运营推广工作内容memo(Component, arePropsEqual?) 使用 memo 将组件包装起来#xff0c;以获得该组件的一个 记忆化 版本。通常情况下#xff0c;只要该组件的 props 没有改变#xff0c;这个记忆化版本就不会在其父组件重新渲染时重新渲染。但 React 仍可能会重新渲染它#xff1a;记忆化…memo(Component, arePropsEqual?) 使用 memo 将组件包装起来以获得该组件的一个 记忆化 版本。通常情况下只要该组件的 props 没有改变这个记忆化版本就不会在其父组件重新渲染时重新渲染。但 React 仍可能会重新渲染它记忆化是一种性能优化而非保证。 import { memo } from react;const SomeComponent memo(function SomeComponent(props) {// ... });参数 Component要进行记忆化的组件。memo 不会修改该组件而是返回一个新的、记忆化的组件。它接受任何有效的 React 组件包括函数组件和 forwardRef 组件。 可选参数 arePropsEqual一个函数接受两个参数组件的前一个 props 和新的 props。如果旧的和新的 props 相等即组件使用新的 props 渲染的输出和表现与旧的 props 完全相同则它应该返回 true。否则返回 false。通常情况下你不需要指定此函数。默认情况下React 将使用 Object.is 比较每个 prop。 返回值 memo 返回一个新的 React 组件。它的行为与提供给 memo 的组件相同只是当它的父组件重新渲染时 React 不会总是重新渲染它除非它的 props 发生了变化。 用法 当 props 没有改变时跳过重新渲染 React 通常在其父组件重新渲染时重新渲染一个组件。你可以使用 memo 创建一个组件当它的父组件重新渲染时只要它的新 props 与旧 props 相同时React 就不会重新渲染它。这样的组件被称为 记忆化的memoized组件。 要记忆化一个组件请将它包装在 memo 中使用它返回的值替换原来的组件 const Greeting memo(function Greeting({ name }) {return h1Hello, {name}!/h1; });export default Greeting;React 组件应该始终具有 纯粹的渲染逻辑。这意味着如果其 props、state 和 context 没有改变则必须返回相同的输出。通过使用 memo你告诉 React 你的组件符合此要求因此只要其 props 没有改变React 就不需要重新渲染。即使使用 memo如果它自己的 state 或正在使用的 context 发生更改组件也会重新渲染。 在此示例中请注意 Greeting 组件在 name 更改时重新渲染因为那是它的 props 之一但是在 address 更改时不会重新渲染因为它不作为 props 传递给 Greeting import { memo, useState } from react;export default function MyApp() {const [name, setName] useState();const [address, setAddress] useState();return (labelName{: }input value{name} onChange{e setName(e.target.value)} //labellabelAddress{: }input value{address} onChange{e setAddress(e.target.value)} //labelGreeting name{name} //); }const Greeting memo(function Greeting({ name }) {console.log(Greeting was rendered at, new Date().toLocaleTimeString());return h3Hello{name , }{name}!/h3; }); 更改AddressGeeting没有重渲染。 更改nameGreeting重新渲染了 在每个地方都应该添加 memo 吗 如果你的应用像此站点一样大多数交互是粗略的例如直接替换页面或整个部分那么通常不需要记忆化。另一方面如果你的应用更像是绘图编辑器大多数交互是细粒度的例如移动图形那么你可能会发现记忆化非常有用。 只有当你的组件经常使用完全相同的 props 重新渲染时并且其重新渲染逻辑是非常昂贵的使用 memo 优化才有价值。如果你的组件重新渲染时没有明显的延迟那么 memo 就不必要了。请记住如果传递给组件的 props 始终不同例如在渲染期间传递对象或普通函数则 memo 是完全无用的。这就是为什么你通常需要在 memo 中同时使用 useMemo 和 useCallback。 在其他情况下将组件包装在 memo 中是没有任何好处的。这种做法也没有什么明显的危害因此一些团队会选择不考虑个别情况并尽可能使用 memo。这种方法的缺点是代码变得不易读。此外并不是所有的记忆化都是有效的一个“总是新的”值足以破坏整个组件的记忆化。 实践中你可以通过遵循一些原则来使许多 memoization 变得不必要 当一个组件在视觉上包裹其他组件时让它 接受 JSX 作为子组件。这样当包装组件更新其自身状态时React 知道其子组件不需要重新渲染。 优先使用局部状态并且不要将 状态提升 到不必要的层级。例如不要将短暂状态如表单数据和项元素是否 hover 状态保留在树的顶部或全局状态库中。 保持你的 渲染逻辑纯粹。如果重新渲染组件会导致问题或产生一些明显的视觉瑕疵则这是你组件中的 bug修复 bug 而不是添加 memoization。 避免 不必要的 Effect 来更新状态。React 应用中的大多数性能问题都是由于 Effect 引起的更新链这些 Effect 会使你的组件一次又一次地重新渲染。 尝试 从你的 Effect 中删除不必要的依赖项。例如与其使用 memoization不如将某些对象或函数移动到 Effect 内部或组件外部这通常更简单。 如果特定交互仍然感觉不流畅请 使用 React 开发者工具 profiler 来查看哪些组件最需要 memoization并在需要时添加 memoization。这些原则使你的组件更易于调试和理解因此建议在任何情况下都遵循它们。从长远来看我们正在研究 自动进行细粒度 memoization以解决这个问题。 当组件的某个 prop 是对象、数组或函数时我的组件会重新渲染。 React 通过浅比较来比较旧的和新的 prop也就是说它会考虑每个新的 prop 是否与旧 prop 引用相等。如果每次父组件重新渲染时创建一个新的对象或数组即使它们每个元素都相同React 仍会认为它已更改。同样地如果在渲染父组件时创建一个新的函数即使该函数具有相同的定义React 也会认为它已更改。为了避免这种情况可以简化 props 或在父组件中记忆化memoizeprops。 官网讲解: memo
http://www.dnsts.com.cn/news/224822.html

相关文章:

  • vpsputty做网站网络营销推广方案书
  • 个性化网站定制价格如何注册公司邮箱帐号
  • 哪个网站做电商门槛最低wordpress个人博客前台模板下载
  • 做个购物网站设计店名logo
  • 长沙竞价网站建设报价国外网站建设官网
  • 模板网站 seowordpress企业模板下载
  • 网站监控怎么做app优化是什么意思
  • 学科主题资源网站的建设河北网站seo优化
  • 伪原创嵌入网站摄影网站的市场可行性
  • 网站开发中为什么有两个控制层网站建设相关关键词
  • 哈尔滨cms模板建站网站301重定向 权重转移
  • 云南省住房和建设厅网站电商网站建设好么
  • 网站动态效果用什么软件做的wordpress图片主题模板
  • 珠海建设局网站首页wordpress页底白
  • 天津网站建设信息科技有限公司设计师常用网站门户
  • 婺城区建设局网站天津新亚太工程建设监理有限公司网站
  • 湖北工程建设信息网站盘锦949公社最新招聘
  • 济宁做网站哪家比较好网站源码地址怎么看
  • 上海大型网站设计公司天津建设工程新希望
  • 北京专业网站翻译影音字幕翻译速记速记快而高效中山免费网站建设
  • wordpress比织梦好北京seo排名分析
  • 做社交网站 投入本钢建设公司官网
  • 济南网站建设培训软件代做公司
  • 实惠高端网站设计品牌wordpress头像存储
  • 旅游网站开发团队网络推广软文是一种很好的推广方式
  • 寺院的网站怎么做软件开发过程模型
  • 摄影师个人网站模板建设网上银行查询
  • 孝感的网站建设做gif表情包网站
  • 做公司网站需要哪些资料咸阳专业网站建设
  • 重庆网站建设快忻科技公司如何做网站宣传