diff --git a/src/App.vue b/src/App.vue
index 314f406..031f6dc 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -8,7 +8,7 @@ import { RouterLink, RouterView } from 'vue-router'
diff --git a/src/modules/counter/pages/Counter.vue b/src/modules/counter/pages/Counter.vue
index 0048d11..d85391c 100644
--- a/src/modules/counter/pages/Counter.vue
+++ b/src/modules/counter/pages/Counter.vue
@@ -1,21 +1,33 @@
- Counter Page
+ Counter Page
- Counter :{{counterStore}}
- Counter map state :{{counter.count }}
- Counter renamed state :{{renamedCounter.count }}
+ Counter map state :{{ counter.count }}
+ Counter renamed state :{{ renamedCounter.count }}
+
+ Getter with double :{{ doubleCount }}
+ Is loading
+
+
+
diff --git a/src/modules/counter/store/stores.ts b/src/modules/counter/store/stores.ts
index 3d5e332..5a9d43c 100644
--- a/src/modules/counter/store/stores.ts
+++ b/src/modules/counter/store/stores.ts
@@ -1,12 +1,37 @@
+import type { ActionContext } from 'vuex'
+
export interface CounterStoreState {
count: number
+ isLoading: boolean
}
export const COUNTER_STORE_MODULE = {
- state: (): CounterStoreState => ({ count: 0 }),
+ namespaced: true,
+ state: (): CounterStoreState => ({ count: 0, isLoading: false }),
mutations: {
- increment(state: CounterStoreState) {
- state.count++
+ increment(state: CounterStoreState, incrementation: number) {
+ state.count = state.count + incrementation
+ },
+ changeIsLoadingState(state: CounterStoreState) {
+ state.isLoading = !state.isLoading
+ }
+ },
+ actions: {
+ async incrementRandomInt(context: ActionContext) {
+ context.commit('changeIsLoadingState')
+ const rn = () => {
+ return new Promise((resolve) => {
+ const random_number = Math.floor(Math.random() * 20 + 1)
+ setTimeout(() => {
+ resolve(random_number)
+ }, 3000)
+ })
+ }
+
+ const number: number = await rn()
+
+ context.commit('increment', number)
+ context.commit('changeIsLoadingState')
}
},
getters: {
diff --git a/src/store/global.store.ts b/src/store/global.store.ts
index 9754de9..3557aa3 100644
--- a/src/store/global.store.ts
+++ b/src/store/global.store.ts
@@ -1,7 +1,13 @@
-import { COUNTER_STORE_MODULE } from '@/modules/counter/store/stores'
-import { createStore } from 'vuex'
+import { COUNTER_STORE_MODULE, type CounterStoreState } from '@/modules/counter/store/stores'
+
+import { Store, createStore } from 'vuex'
// Create a new store instance.
-export const GLOBAL_STORE = createStore({
+
+export interface State {
+ counter: CounterStoreState
+}
+
+export const GLOBAL_STORE:Store = createStore({
modules: {
counter: COUNTER_STORE_MODULE
}
diff --git a/vuex-shim.d.ts b/vuex-shim.d.ts
new file mode 100644
index 0000000..44eb598
--- /dev/null
+++ b/vuex-shim.d.ts
@@ -0,0 +1,9 @@
+import { ComponentCustomProperties } from 'vue'
+import { Store } from 'vuex'
+import { State } from './src/store/global.store'
+
+declare module '@vue/runtime-core' {
+ interface ComponentCustomProperties {
+ $store: Store
+ }
+}
diff --git a/vuex.d.ts b/vuex.d.ts
index f10bd12..55e0202 100644
--- a/vuex.d.ts
+++ b/vuex.d.ts
@@ -4,3 +4,4 @@ declare module 'vuex' {
export * from 'vuex/types/logger.d.ts'
export * from 'vuex/types/vue.d.ts'
}
+