Stencil.js-侦听主机元素上的类属性更改

时间:2019-04-26 06:05:50

标签: web-component stenciljs stencil-component

我如何侦听主机元素上class属性的更改?

2 个答案:

答案 0 :(得分:1)

有一个简单的方法可以做到这一点,但这可能并不适合所有情况。

只需将“类”添加为@Prop和@Watch:

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

答案 1 :(得分:0)

跟踪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);
}