我正在使用ember.js(version 3.7)
,现在我感到困惑。现在,我正在为我们的应用程序优化代码部分。首先,我将尝试查找在组件中重新渲染的东西是什么?进入这个话题后,我感到困惑。
在余烬中,他们使用了didRender()方法来触发事物的重新渲染(jQuery DOM操作,Asnyc函数加载等...)。现在,我对在余烬中重新渲染还不了解。有人可以向我解释重新渲染的细节吗?并且,如果您有关于在余烬中重新渲染的任何资源,请分享。
谢谢。
答案 0 :(得分:1)
didRender
钩子与triggering a re-render
无关。共享了以下链接的指南描述为该指南:
更新后,您可以利用此挂钩对组件的DOM进行后处理。
您可能要对尺寸或焦点或滚动做些事情。为此,您需要等到渲染完成。因为否则您将无法获得组件的确切值和位置。在这种情况下,您可以使用didRender
挂钩。
例如: -如果您想聚焦视图的某些部分 -如果您要滚动视图的某些部分 -如果您要调整某些组件的大小 -如果您要调用试图访问DOM元素的第三方库。 等等。您可以使用此挂钩。
当然,如果您做的事情会影响组件的值,它会触发重新渲染。但这是您通常不应该执行的操作。
让我们进一步澄清re-render
:
在渲染,重新渲染并最终删除组件时,Ember提供了生命周期挂钩,使您可以在组件生命周期中的特定时间运行代码。
(Ref)
指南说了大约三个主要阶段(Ref):
此处的Re-render
表示,如果组件的参数或属性发生更改,它将开始重新呈现自身。例如,考虑一个person-card
组件,它显示一个人的属性。如{{person-card person=model.person}}
。每当person参数更改时,组件都会重新渲染。