From 564cede2e58f9f802cd84c7d797886ea521a2a14 Mon Sep 17 00:00:00 2001
From: CharleeWa <18888351756@163.com>
Date: Wed, 31 Jan 2024 23:28:42 +0800
Subject: [PATCH] feat: Switch to Setup Stores in Pinia
---
src/App.vue | 8 +++++--
src/main.ts | 5 +----
src/router/index.ts | 13 ++++++-----
src/stores/index.ts | 7 ++++--
src/stores/modules/routeTransitionName.ts | 27 ++++++++++-------------
5 files changed, 31 insertions(+), 29 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 193206c..a59272b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,15 +1,19 @@
-
+
diff --git a/src/main.ts b/src/main.ts
index 5823f6a..b777d3e 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,8 +1,7 @@
import { createApp } from 'vue'
-import { createPinia } from 'pinia'
-import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import App from '@/App.vue'
import router from '@/router'
+import pinia from '@/stores'
import 'virtual:uno.css'
@@ -23,8 +22,6 @@ import 'vant/es/notify/style'
import 'vant/es/image-preview/style'
const app = createApp(App)
-const pinia = createPinia()
-pinia.use(piniaPluginPersistedstate)
app.use(router)
app.use(pinia)
diff --git a/src/router/index.ts b/src/router/index.ts
index 003b7b1..011d5da 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,25 +1,27 @@
import { createRouter, createWebHistory } from 'vue-router/auto'
import NProgress from 'nprogress'
-import { useRouteTransitionNameHook } from '@/stores/modules/routeTransitionName'
+import useRouteTransitionNameStore from '@/stores/modules/routeTransitionName'
import 'nprogress/nprogress.css'
NProgress.configure({ showSpinner: true, parent: '#app' })
+
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_APP_PUBLIC_PATH),
})
router.beforeEach((to, from, next) => {
NProgress.start()
- const hook = useRouteTransitionNameHook()
+
+ const routeTransitionNameStore = useRouteTransitionNameStore()
if (to.meta.level > from.meta.level)
- hook.setName('slide-fadein-left') // 进入动画
+ routeTransitionNameStore.setName('slide-fadein-left')
else if (to.meta.level < from.meta.level)
- hook.setName('slide-fadein-right') // 返回动画
+ routeTransitionNameStore.setName('slide-fadein-right')
else
- hook.setName('') // 没有动画
+ routeTransitionNameStore.setName('')
next()
})
@@ -28,5 +30,4 @@ router.afterEach(() => {
NProgress.done()
})
-// 导出路由实例,并在 `main.ts` 挂载
export default router
diff --git a/src/stores/index.ts b/src/stores/index.ts
index ec18866..e952ed8 100644
--- a/src/stores/index.ts
+++ b/src/stores/index.ts
@@ -1,4 +1,7 @@
import { createPinia } from 'pinia'
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
-const store = createPinia()
-export { store }
+const pinia = createPinia()
+pinia.use(piniaPluginPersistedstate)
+
+export default pinia
diff --git a/src/stores/modules/routeTransitionName.ts b/src/stores/modules/routeTransitionName.ts
index c6350c0..61bbf85 100644
--- a/src/stores/modules/routeTransitionName.ts
+++ b/src/stores/modules/routeTransitionName.ts
@@ -1,19 +1,16 @@
import { defineStore } from 'pinia'
-import { store } from '@/stores'
-export const useRouteTransitionNameStore = defineStore({
- id: 'route-transition-name',
- state: () => ({
- // 过渡动画名称
- routeTransitionName: '',
- }),
- actions: {
- setName(name: string) {
- this.routeTransitionName = name
- },
- },
+const useRouteTransitionNameStore = defineStore('route-transition-name', () => {
+ const routeTransitionName = ref('')
+
+ const setName = (name: string) => {
+ routeTransitionName.value = name
+ }
+
+ return {
+ routeTransitionName,
+ setName,
+ }
})
-export function useRouteTransitionNameHook() {
- return useRouteTransitionNameStore(store)
-}
+export default useRouteTransitionNameStore