Ember: Что означает перерисовка в ember js? - PullRequest
1 голос
/ 15 мая 2019

Я использую ember.js(version 3.7), и я сейчас укушен в замешательстве.Сейчас я работаю над оптимизацией части кода для нашего приложения.Сначала я попытаюсь выяснить, какие вещи перерисовываются в компонентах?Попав в эту тему я кусаюсь смущен этим.

В ember они использовали метод didRender () для запуска повторного рендеринга (манипуляции с JQuery DOM, загрузка функций Asnyc и т. Д.) .Сейчас у меня нет особых идей по поводу повторного рендеринга в Ember.Может кто-нибудь объяснить мне перерисовать в деталях?И, пожалуйста, поделитесь, если у вас есть ресурс о повторном рендере в ember.

Заранее спасибо.

1 Ответ

1 голос
/ 15 мая 2019

didRender крючок не о triggering a re-render.Он описан как Руководство, к которому вы поделились ссылкой:

Этот хук можно использовать для выполнения постобработки в DOM компонента после его обновления.

Возможно, вы захотите что-то сделать с размерами, фокусами или свитками.Для этого вам нужно дождаться окончания рендеринга.Потому что в противном случае вы не можете получить точные значения и положения компонентов.Для этих случаев вы можете использовать didRender hook.

Например: - если вы хотите сфокусировать некоторые части представления - если вы хотите прокрутить некоторые части представления - если вы хотите изменить размеры некоторых компонентов- если вы хотите вызвать сторонние библиотеки, которые пытаются получить доступ к элементу DOM.и т.д. Вы можете использовать эту ловушку.

Конечно, если вы делаете что-то, что влияет на значения компонента, это может вызвать повторную визуализацию.Но это то, что вы обычно не должны делать.


Давайте еще раз уточним: re-render:

По мере того, как компоненты визуализируются, перерисовываются и, наконец,Удаленный, Ember предоставляет ловушки жизненного цикла, которые позволяют запускать код в определенные моменты жизни компонента.

( Ref )

В руководстве говорится о 3 основных фазах( Ref ):

  • Начальный рендер
  • Повторный рендеринг
  • Разрушение компонента

Здесь1040 * означает, что если изменяется аргумент или свойство компонента, он начинает перерисовываться сам.Например, представьте себе компонент person-card, который отображает свойства человека.Такие как {{person-card person=model.person}}.Всякий раз, когда изменяется параметр person, компонент будет повторно отображаться.

...