Я создаю плагин VueJS, используя свойства экземпляра, и мне нужно принести вернуть некоторые реактивные значения обратно в VueJS.
Мои поиски:
Я не понимаю, что стоит за Object.defineProperty()
, я искал инициализация геттеров vuex поскольку моя логика похожа, но я не понимаю, как работать правильно.
Простой пример:
Ниже фрагмент VueJS, прикрепленный к его прототипу, main.js
:
Vue.prototype.$ajax = {
loading: false,
isLoading () {
return this.loading
}
}
Теперь, обращаясь к нему из компонента, component.vue
:
export default {
computed: {
loading () {
return this.$ajax.isLoading()
}
},
created () {
let self = this
setInterval(() => {
console.log(this.loading, this.$ajax.isLoading())
}, 100)
setTimeout(() => {
this.$ajax.loading = true
}, 1000)
}
}
}
Пример результата:
До setTimeout
у нас есть false false
(это ожидаемый результат), а после setTimeout
у нас есть false true
(геттер не получает модификацию, но значение имеет прямой аксессор).
Есть идеи добавить немного реактивности в мой $ajax.isLoading()
?