afterRenderEffect
API
function afterRenderEffect(
callback: (onCleanup: EffectCleanupRegisterFn) => void,
options?: AfterRenderOptions | undefined,
): AfterRenderRef;
function afterRenderEffect<E = never, W = never, M = never>(
spec: {
earlyRead?: ((onCleanup: EffectCleanupRegisterFn) => E) | undefined;
write?:
| ((
...args: [
...([E] extends [never] ? [] : [Signal<E>]),
EffectCleanupRegisterFn,
]
) => W)
| undefined;
mixedReadWrite?:
| ((
...args: [
...([W] extends [never]
? [E] extends [never]
? []
: [Signal<E>]
: [Signal<W>]),
EffectCleanupRegisterFn,
]
) => M)
| undefined;
read?:
| ((
...args: [
...([M] extends [never]
? [W] extends [never]
? [E] extends [never]
? []
: [Signal<E>]
: [Signal<W>]
: [Signal<M>]),
EffectCleanupRegisterFn,
]
) => void)
| undefined;
},
options?: AfterRenderOptions | undefined,
): AfterRenderRef;
function afterRenderEffect(callback: (onCleanup: EffectCleanupRegisterFn) => void, options?: AfterRenderOptions | undefined): AfterRenderRef;
Зарегистрируйте эффект, который при срабатывании вызывается после завершения отрисовки приложения, на этапе mixedReadWrite.
Вместо этого рекомендуется явно указать этап для эффекта, иначе возможно значительное снижение производительности.
Обратите внимание, что обратные вызовы afterRenderEffect, основанные на обратных вызовах, выполняются
- в порядке регистрации
- только при наличии изменений
- только в браузерных средах
- на этапе
mixedReadWrite
Не гарантируется, что компоненты будут гидратированы до выполнения обратного вызова. Будьте осторожны при непосредственном чтении или изменении DOM и макета.
(onCleanup: EffectCleanupRegisterFn) => voidФункция обратного вызова эффекта для регистрации
AfterRenderRef
function afterRenderEffect<E = never, W = never, M = never>(spec: { earlyRead?: ((onCleanup: EffectCleanupRegisterFn) => E) | undefined; write?: ((...args: [...[E] extends [never] ? [] : [Signal<E>], EffectCleanupRegisterFn]) => W) | undefined; mixedReadWrite?: ((...args: [...[W] extends [never] ? [E] extends [never] ? [] : [Signal<E>] : [Signal<W>], EffectCleanupRegisterFn]) => M) | undefined; read?: ((...args: [...[M] extends [never] ? [W] extends [never] ? [E] extends [never] ? [] : [Signal<E>] : [Signal<W>] : [Signal<M>], EffectCleanupRegisterFn]) => void) | undefined; }, options?: AfterRenderOptions | undefined): AfterRenderRef;Зарегистрируйте эффекты, которые при срабатывании вызываются после завершения отрисовки приложения на указанных этапах. Доступны следующие этапы:
-
earlyReadИспользуйте этот этап, чтобы читать данные из DOM до последующего обратного вызоваwrite, например, для выполнения пользовательской компоновки, которую браузер не поддерживает изначально. Если чтение может подождать до завершения этапа записи, предпочтительнее использовать этапread. На этом этапе никогда не изменяйте DOM. -
writeИспользуйте этот этап, чтобы изменять DOM. На этом этапе никогда не читайте данные из DOM. -
mixedReadWriteИспользуйте этот этап для одновременного чтения данных из DOM и изменения DOM. Никогда не используйте этот этап, если работу можно распределить между другими этапами. -
readИспользуйте этот этап, чтобы читать данные из DOM. На этом этапе никогда не изменяйте DOM.
По возможности предпочтительнее использовать этапы read и write, а не этапы earlyRead и mixedReadWrite, чтобы избежать снижения производительности.
Обратите внимание:
- Эффекты выполняются в следующем порядке этапов и только при наличии изменений в зависимостях-сигналах:
earlyReadwritemixedReadWriteread
-
afterRenderEffectв рамках одного этапа выполняются в порядке регистрации. -
afterRenderEffectвыполняются только в браузерных средах, но не на сервере. -
afterRenderEffectвыполняются как минимум один раз.
Первый обратный вызов этапа, выполняемый в рамках этой спецификации, не получает параметров. Каждый последующий обратный вызов этапа в этой спецификации получает возвращаемое значение предыдущего обратного вызова этапа в виде Signal. Это позволяет координировать работу на нескольких этапах.
Angular не может проверять или обеспечивать корректное использование этапов и полагается на то, что каждый разработчик будет следовать рекомендациям, описанным для каждого значения, тщательно выбирать подходящее значение и при необходимости рефакторить код. Это позволяет Angular эффективнее минимизировать снижение производительности, связанное с ручным доступом к DOM, и обеспечивать наилучший опыт для конечных пользователей вашего приложения или библиотеки.
Не гарантируется, что компоненты будут гидратированы до выполнения обратного вызова. Будьте осторожны при непосредственном чтении или изменении DOM и макета.
{ earlyRead?: ((onCleanup: EffectCleanupRegisterFn) => E) | undefined; write?: ((...args: [...[E] extends [never] ? [] : [Signal<E>], EffectCleanupRegisterFn]) => W) | undefined; mixedReadWrite?: ((...args: [...[W] extends [never] ? [E] extends [never] ? [] : [Signal<E>] : [Signal<W>], EffectCleanupRegisterFn]) => M) | undefined; read?: ((...args: [...[M] extends [never] ? [W] extends [never] ? [E] extends [never] ? [] : [Signal<E>] : [Signal<W>] : [Signal<M>], EffectCleanupRegisterFn]) => void) | undefined; }Функции эффектов для регистрации
AfterRenderRef
Используйте afterRenderEffect для создания эффектов, которые читают данные из DOM или изменяют DOM и поэтому должны выполняться после отрисовки.
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/core/afterRenderEffect