Если я создаю свой компонент следующим образом:
<template>
<div>
<button @click="increment">Count is: {{ store.getters.count }}</button>
</div>
</template>
<script>
import { reactive } from "@vue/composition-api";
import store from "../store";
export default {
name: "Count",
setup() {
const state = reactive({
store
});
const increment = () => {
store.dispatch.increment();
};
return {
...state,
increment
};
}
};
</script>
И мой магазин определяется следующим образом:
import Vue from "vue";
import Vuex from "vuex";
import { createDirectStore } from "direct-vuex";
Vue.use(Vuex);
const {
store,
rootActionContext,
moduleActionContext,
rootGetterContext,
moduleGetterContext
} = createDirectStore({
state: {
count: 0
},
getters: {
count: state => state.count
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit("increment");
}
}
});
// Export the direct-store instead of the classic Vuex store.
export default store;
// The following exports will be used to enable types in the
// implementation of actions and getters.
export {
rootActionContext,
moduleActionContext,
rootGetterContext,
moduleGetterContext
};
// The following lines enable types in the injected store '$store'.
export type AppStore = typeof store;
declare module "vuex" {
interface Store<S> {
direct: AppStore;
}
}
Есть ли способ получить доступ к количеству лучше, чем {{ store.getters.count }}
в шаблоне? В идеале, я хотел бы просто получить к нему доступ, как {{ count }}
, но кажется, что только store
реагирует. Другими словами, если я отправляю действие приращения, `` {{count}} `не обновляется, даже если я пытаюсь определить число различными способами. Вот одна вещь, которую я попробовал:
setup() {
const state = reactive({
store,
count: store.getters.count
});
const increment = () => {
store.dispatch.increment();
};
return {
...state,
count: state.count,
increment
};
}
Почему {{ count }}
не реагирует в этом случае?