gpt4 book ai didi

vuejs2 - 如何在 vuejs 插件中创建响应式全局属性?

转载 作者:行者123 更新时间:2023-12-01 22:07:30 25 4
gpt4 key购买 nike

我将 $testCounter 放在一个插件中使其成为全局的:

Vue.use({
install(Vue) {
Vue.prototype.$testCounter = 0;
Vue.prototype.$incrementCounter = () => {
Vue.prototype.$testCounter++;
};
});

我想在某个组件中输出它。我还需要它的值(value)在全局范围内被动更新:

<template>
<p>{{ $testCounter }}</p>
</template>

<script>
mounted() {
let comp = this;
comp.watcherId = setInterval(() => {
comp.$incrementCounter();

// I want to remove this line and still be reactive :
comp.$forceUpdate();

}, 1000);
}
</script>

我需要该属性是 react 性的,我尝试了多个解决方案作为观察者、计算 Prop 、vm.$set(...),但我找不到正确的方法来做到这一点。

最佳答案

方案一:使用Vuex

方案二:在根组件中设置全局响应数据,调用this.$root

使用

演示:https://jsfiddle.net/jacobgoh101/mdt4673d/2/

HTML

<div id="app">
<test1>
{{$root.testCounter}}

</test1>
</div>

Javascript

Vue.component('test1', {
template: `
<div>
test1
<slot></slot>
</div>
`,
mounted() {
setInterval(() => {
this.$root.incrementCounter();
}, 1000)
}
});

new Vue({
el: "#app",
data: {
testCounter: 1
},
methods: {
incrementCounter: function() {
this.testCounter++;
}
}
})

关于vuejs2 - 如何在 vuejs 插件中创建响应式全局属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50677826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com