Stencil.js - прослушивает изменения атрибутов класса в элементе хоста

Как я слушаю изменения в class атрибут на элементе хоста?

2 ответа

Решение

Есть простой способ сделать это, но он может не подходить для всех ситуаций.

Просто добавьте "класс" как @Prop и @Watch:

@Prop() class: string;
@Watch('class') handleClassChange(class: string) {
    console.log(class);
}

Отслеживание изменений атрибута DOM требует использования MutationObserver,

https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

componentDidLoad() {
    // Target element that will be observed
    const target = this.el;

    const config = {
        attributes: true,
        attributeOldValue: true,
        attributeFilter: ['class']
    };

    function subscriberCallback(mutations) {
        mutations.forEach((mutation) => {
            console.log(mutation);
        });
    }

    const observer = new MutationObserver(subscriberCallback);
    observer.observe(target, config);
}
Другие вопросы по тегам