Skip to content

Commit 564cede

Browse files
committed
feat: Switch to Setup Stores in Pinia
1 parent b41a88a commit 564cede

File tree

5 files changed

+31
-29
lines changed

5 files changed

+31
-29
lines changed

src/App.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
<script setup lang="ts">
22
import type { ConfigProviderTheme } from 'vant'
3-
import { useRouteTransitionNameHook } from '@/stores/modules/routeTransitionName'
3+
import { storeToRefs } from 'pinia'
4+
import useRouteTransitionNameStore from '@/stores/modules/routeTransitionName'
45
56
const theme = ref<ConfigProviderTheme>('light')
67
provide('isRealDark', computed(() => theme.value === 'dark'))
8+
9+
const routeTransitionNameStore = useRouteTransitionNameStore()
10+
const { routeTransitionName } = storeToRefs(routeTransitionNameStore)
711
</script>
812

913
<template>
1014
<VanConfigProvider :theme="theme">
1115
<router-view v-slot="{ Component, route }">
12-
<transition :name="useRouteTransitionNameHook().routeTransitionName">
16+
<transition :name="routeTransitionName">
1317
<div :key="route.name" class="app-wrapper">
1418
<component :is="Component" />
1519
</div>

src/main.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { createApp } from 'vue'
2-
import { createPinia } from 'pinia'
3-
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
42
import App from '@/App.vue'
53
import router from '@/router'
4+
import pinia from '@/stores'
65

76
import 'virtual:uno.css'
87

@@ -23,8 +22,6 @@ import 'vant/es/notify/style'
2322
import 'vant/es/image-preview/style'
2423

2524
const app = createApp(App)
26-
const pinia = createPinia()
27-
pinia.use(piniaPluginPersistedstate)
2825

2926
app.use(router)
3027
app.use(pinia)

src/router/index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
import { createRouter, createWebHistory } from 'vue-router/auto'
22
import NProgress from 'nprogress'
33

4-
import { useRouteTransitionNameHook } from '@/stores/modules/routeTransitionName'
4+
import useRouteTransitionNameStore from '@/stores/modules/routeTransitionName'
55
import 'nprogress/nprogress.css'
66

77
NProgress.configure({ showSpinner: true, parent: '#app' })
8+
89
const router = createRouter({
910
history: createWebHistory(import.meta.env.VITE_APP_PUBLIC_PATH),
1011
})
1112

1213
router.beforeEach((to, from, next) => {
1314
NProgress.start()
14-
const hook = useRouteTransitionNameHook()
15+
16+
const routeTransitionNameStore = useRouteTransitionNameStore()
1517
if (to.meta.level > from.meta.level)
16-
hook.setName('slide-fadein-left') // 进入动画
18+
routeTransitionNameStore.setName('slide-fadein-left')
1719

1820
else if (to.meta.level < from.meta.level)
19-
hook.setName('slide-fadein-right') // 返回动画
21+
routeTransitionNameStore.setName('slide-fadein-right')
2022

2123
else
22-
hook.setName('') // 没有动画
24+
routeTransitionNameStore.setName('')
2325

2426
next()
2527
})
@@ -28,5 +30,4 @@ router.afterEach(() => {
2830
NProgress.done()
2931
})
3032

31-
// 导出路由实例,并在 `main.ts` 挂载
3233
export default router

src/stores/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import { createPinia } from 'pinia'
2+
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
23

3-
const store = createPinia()
4-
export { store }
4+
const pinia = createPinia()
5+
pinia.use(piniaPluginPersistedstate)
6+
7+
export default pinia
Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import { defineStore } from 'pinia'
2-
import { store } from '@/stores'
32

4-
export const useRouteTransitionNameStore = defineStore({
5-
id: 'route-transition-name',
6-
state: () => ({
7-
// 过渡动画名称
8-
routeTransitionName: '',
9-
}),
10-
actions: {
11-
setName(name: string) {
12-
this.routeTransitionName = name
13-
},
14-
},
3+
const useRouteTransitionNameStore = defineStore('route-transition-name', () => {
4+
const routeTransitionName = ref('')
5+
6+
const setName = (name: string) => {
7+
routeTransitionName.value = name
8+
}
9+
10+
return {
11+
routeTransitionName,
12+
setName,
13+
}
1514
})
1615

17-
export function useRouteTransitionNameHook() {
18-
return useRouteTransitionNameStore(store)
19-
}
16+
export default useRouteTransitionNameStore

0 commit comments

Comments
 (0)