Skip to content

Possible memory leak в eventemitter из-за подписки на theme.change #1501

@ItMaga

Description

@ItMaga

Проблема

Если полазить по разным страницам с включенным keepAlive, то в какой-то момент стреляет ошибка Possible memory leak из eventemitter, связано с тем, что мы подписываемся в каждом компоненте на изменение темы для синхронизации модификатора.

Происходит подписка здесь

this.sync.mod('theme', 'remoteState.theme.emitter:theme.change', {immediate: true}, (theme?: Theme) =>
(theme ?? this.remoteState.theme.get()).value);

Тут нужно уточнить у @kobezzza, по какой причине мы не могли отказать от слушателя, Артем говорил, что подобный вопрос уже поднимался.

Возможные решения

  1. Использовать глобальный селектор на теге html, для определения текущей темы. Если есть необходимость в модификаторе на отдельном компоненте, то добавить возможность точечной синхронизации темы с локальным модификатор компонента.
  2. Использовать sharedMods?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions