vue3router.ts中使用 pinia
时间: 2024-09-24 22:14:32 浏览: 46
Vue3 Router 和 Pinia 的结合可以帮助你在 Vue 应用程序中管理路由状态和数据存储。Pinia 是 Vue 3 中官方推荐的状态管理模式,它提供了一个轻量级、集中式的 Store API 来替代Vuex。
要在 `vue-router` 中使用 Pinia,你需要按照以下步骤操作:
1. **安装依赖**:
- 首先安装 `pinia` 和 `@vue/router-pinning` 插件:
```bash
npm install pinia @vue/router-pinning
```
2. **创建 Pinia store**:
- 创建一个名为 `store.js` 或者你喜欢的名字的文件,里面会初始化你的 Pinia store:
```javascript
import { createStore } from 'pinia';
export const useRouterStore = createStore({
id: 'router',
state: () => ({
currentRoute: null,
// 添加其他需要保存的路由相关信息
}),
actions: {
async onRouteChange(to) {
// 更新 state 当路由改变
this.currentRoute = to;
// 可能的异步操作,如更新路由相关的缓存等
},
},
});
```
3. **注入到 Vue 实例中**:
- 在你的主入口文件(通常是 `main.js` 或者 `app.vue`)里,导入并配置 Pinia 和路由插件的集成:
```javascript
import { useRouterStore } from './store/store';
import { createRouter, createWebHistory } from 'vue-router';
import routes from './routes'; // 你的路由配置
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
});
router.onReady(() => useRouterStore(store)); // 在路由准备就绪时注入 store
new Vue({ router, setup: () => useRouterStore(store) }); // 注入 store 到每个组件上
```
4. **在组件中访问路由信息**:
现在你可以在组件中使用 `useRouterStore` hook 访问当前路由的信息:
```javascript
import { useRouterStore } from '@/store/store';
setup() {
const { currentRoute } = useRouterStore();
//...
}
```
阅读全文