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

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

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

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

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

@Prop() class: string;
@Watch('class') handleClassChange(class: string) {
    console.log(class);
}
0 голосов
/ 26 апреля 2019

Отслеживание изменений атрибута 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);
}
...