【问题标题】:What conditions cause an Angular component rendering?什么条件会导致 Angular 组件渲染?
【发布时间】:2022-01-05 10:16:30
【问题描述】:

如您所知,为了获得良好的性能,我们总是尽量减少单页应用程序中的渲染。例如,在 React 中,每当组件内部的状态或 props 发生更改时,该更改都会使该组件重新执行、重新评估并最终重新渲染。

那么,Angular 中是否有类似的条件?以及减少额外渲染的最佳实践和模式是什么?

【问题讨论】:

  • 是的,它们类似于Reach组件:当组件内的内容发生变化时,必须重新绘制
  • 了解变更检测:blog.angular-university.io/…
  • 谢谢,但我不是说副作用。
  • 阅读“关于推送变更检测策略”。通过将变更检测设置为 onPush,您将可以更好地控制变更检测周期。

标签: javascript reactjs angular typescript


【解决方案1】:

这是一个很大的话题,但我建议初学者阅读以下文章:https://blog.angular-university.io/how-does-angular-2-change-detection-really-work/

TLDR;

发生的情况是 Angular 在启动时会修补几个低级浏览器 API,例如 addEventListener,它是用于注册所有浏览器事件的浏览器函数,包括点击处理程序。 Angular 会将 addEventListener 替换为新版本

因此,通过扩展基本功能,Angular 了解触发重新评估值和重新渲染需求的变化。

另外,我们需要提及的是,比较并不深入引用类型,因此应该进行一些处理。

在文章中,提到了几种性能调整方法,例如

  1. 关于推送变化检测方法。
  2. 禁用组件的自动检测并手动触发循环。
  3. 借助库行 immutable.js 使用不可变对象

如您所见,这些都是他们自己的陷阱和考虑因素

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多