Как работает flushSync?
Что делает метод
Забыли? Вернитесь к посту от31.03.2025 .
👉 @sWebDev
Что делает метод
flushSync()
в React?Забыли? Вернитесь к посту от
👉 @sWebDev
Что делает метод flushSync() в React?
Anonymous Quiz
69%
Немедленно обновляет состояние и выполняет ререндер.
9%
Отменяет пакетирование обновлений.
17%
Откладывает ререндер на следующий кадр.
5%
Запрещает обновления компонентов.
Ручной запуск обновления
Метод
В этом примере внешний обработчик (
👉 @sWebDev
Метод
ɵmarkDirty()
в Angular вручную помечает компонент как «грязный», инициируя обновление при следующем цикле детекции изменений. Это используется вне зоны Angular (например, в стороннем коде), и работает только с ChangeDetectionStrategy.OnPush
.import {
Component,
ChangeDetectionStrategy,
ɵmarkDirty
} from '@angular/core';
declare const externalClick: (cb: () => void) => void;
@Component({
selector: 'app-alert',
template: `<p *ngIf="visible">Внешнее событие!</p>`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class AlertComponent {
visible = false;
ngOnInit() {
externalClick(() => {
this.visible = true;
ɵmarkDirty(this);
});
}
}
В этом примере внешний обработчик (
externalClick
) активирует компонент, не запуская Angular change detection. Мы вручную вызываем ɵmarkDirty(this)
, чтобы Angular отрендерил компонент на следующем проходе.👉 @sWebDev
Notie
Notie — это минималистичная библиотека для отображения уведомлений, подтверждений и запросов в браузере. Не требует зависимостей, легко настраивается и подходит для быстрого информирования пользователя без перегрузки интерфейса.
👉 @sWebDev
Notie — это минималистичная библиотека для отображения уведомлений, подтверждений и запросов в браузере. Не требует зависимостей, легко настраивается и подходит для быстрого информирования пользователя без перегрузки интерфейса.
👉 @sWebDev
LinkedSignal в Angular 19: управление состоянием, зависящим от других сигналов
Когда одно состояние зависит от другого, легко запутаться в логике обновлений.
👉 @sWebDev
Когда одно состояние зависит от другого, легко запутаться в логике обновлений.
linkedSignal
решает эту проблему — он синхронизирует изменения автоматически, упрощая управление связанными данными в компонентах. В статье — разбор, чем linkedSignal
отличается от других сигналов, и как применять его в реальных сценариях, чтобы избежать лишней логики и багов.👉 @sWebDev
Slideout.js
Slideout.js — небольшая библиотека для создания боковых выезжающих меню. Поддерживает свайпы, не зависит от сторонних фреймворков и подходит для адаптивных интерфейсов на мобильных и десктопных устройствах.
👉 @sWebDev
Slideout.js — небольшая библиотека для создания боковых выезжающих меню. Поддерживает свайпы, не зависит от сторонних фреймворков и подходит для адаптивных интерфейсов на мобильных и десктопных устройствах.
👉 @sWebDev
Тип представления в Angular
Какой тип представления в Angular представляет собой экземпляр шаблона, а не компонента?
Забыли? Вернитесь к посту от07.04.2025 .
👉 @sWebDev
Какой тип представления в Angular представляет собой экземпляр шаблона, а не компонента?
Забыли? Вернитесь к посту от
👉 @sWebDev
Какой тип представления в Angular представляет собой экземпляр шаблона, а не компонента?
Anonymous Quiz
9%
ComponentRef.
18%
EmbeddedViewRef.
12%
ViewRef.
62%
TemplateRef.
Изоляция внедрения зависимостей
Флаг
Например, компонент внедряет
В этом случае будет получено значение из родительского инжектора, даже если в текущем компоненте есть свой провайдер
👉 @sWebDev
Флаг
InjectFlags.SkipSelf
позволяет пропустить текущий инжектор и искать зависимость в родительских инжекторах. Это используется, когда в компоненте не должно быть локальных определений сервиса, а требуется внедрить его из вышестоящего уровня, например, из родителя или модуля.Например, компонент внедряет
ConfigService
, но пропускает локальный провайдер и получает зависимость извне:import { Component, Inject, inject, InjectionToken, InjectFlags } from '@angular/core';
export const CONFIG_TOKEN = new InjectionToken<string>('Config');
@Component({
selector: 'child-component',
template: `Config: {{ value }}`,
providers: [{ provide: CONFIG_TOKEN, useValue: 'локальная конфигурация' }]
})
export class ChildComponent {
value = inject(CONFIG_TOKEN, InjectFlags.SkipSelf);
}
В этом случае будет получено значение из родительского инжектора, даже если в текущем компоненте есть свой провайдер
CONFIG_TOKEN
. 👉 @sWebDev
Вот самое крутое:
Подпишись и находи для себя мощные нейросети бесплатно: https://www.tg-me.com/+VjFnutGM-r1lNmQy
Please open Telegram to view this post
VIEW IN TELEGRAM
List.js
List.js — JavaScript-библиотека для добавления поиска, сортировки и фильтрации к HTML-таблицам и спискам. Простая в подключении, не требует jQuery и подходит для интерфейсов с динамическими наборами данных.
👉 @sWebDev
List.js — JavaScript-библиотека для добавления поиска, сортировки и фильтрации к HTML-таблицам и спискам. Простая в подключении, не требует jQuery и подходит для интерфейсов с динамическими наборами данных.
👉 @sWebDev