afterRender vs didInsertElement

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了afterRender vs didInsertElement相关的知识,希望对你有一定的参考价值。

什么是ember.js中以下两件事之间的区别?

当一个人优先于另一个人时,是否有经验法则?

1)afterRender运行循环

2)didInsertElement

答案

afterRender为您提供了一种方法,可以在完成所有先前计划的渲染任务后安排执行某些逻辑。取自Ember Run Loop docs。

$('a').click(() => {
  // Do something.. 
  Ember.run.schedule('afterRender', () => {
    // Do yet more things
  });
});

didInsertElement是一个只调用一次的组件钩子(与didReceiveAttrs不同),并为开发人员提供了添加其他逻辑的选项。 由于它仅在首次呈现组件元素时触发一次,因此它是附加事件侦听器的好地方。更多信息在Ember Component Lifecycle docs。

您可以从Ember.run.schedule部分here获取更多信息。您可以看到如何将hook和afterRender一起使用以避免UI问题。

另一答案

我总是喜欢didInsertElment钩子,如果我需要处理渲染的DOM元素。每当你想到使用afterRender run loop hack来解决你的问题时,那就是引入组件的最佳时机。

路径中没有钩子,要知道所有UI元素都在DOM中呈现,就像组件有didInsertElementdidRender钩子一样。

大多数afterRender运行循环黑客将在路由文件中使用,在所有UI渲染完成后运行一些逻辑。

您还可以在Ember Map的路线级视频中使用组件挂钩。 https://embermap.com/video/component-hooks-at-the-route-level

以上是关于afterRender vs didInsertElement的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ember 控制器中运行操作 afterRender

如何在 afterrender 事件 Ext JS 中获取标题标签元素?

extjs 组合框 afterrender() 一起调用导致异步 ajax 调用

Knockout afterRender 只触发一次

如何在Afterrender事件Ext JS中获取头标记元素?

如何在加载模型时在Ember中显示加载模板?