У меня есть компонент Vue, который обернут в тег <keep-alive>
для предотвращения повторного рендеринга.
Внутри компонента я хочу реагировать на некоторые изменения в глобальных данных с помощью метода. Но я хочу запустить метод только в том случае, если компонент в данный момент активен.
Прямо сейчас я делаю что-то вроде этого:
export default {
data() {
return {
globalVar: this.$store.state.var,
isComponentActive: false,
};
},
methods: {
foo() { console.log('foo') };
},
watch: {
globalVar() {
if (this.isComponentActive) {
this.foo();
}
},
},
activated() {
this.isComponentActive = true;
},
deactivated() {
this.isComponentActive = false;
},
}
Но я надеялся, что уже есть свойство экземпляра компонента, на которое я мог бы сослаться. Примерно так:
export default {
data() {
return { globalVar: this.$store.state.var };
},
methods: {
foo() { console.log('foo') };
},
watch: {
globalVar() {
if (this.$isComponentActive) {
this.foo();
}
},
},
}
Я не могу найти ничего подобного в документации по тегу <keep-alive>
. И, глядя на экземпляр Vue, у него, похоже, нет свойства для него. Но кто-нибудь знает, как я могу получить «активированное» состояние экземпляра Vue, не поддерживая его самостоятельно через хуки?