如何在Pinia的Getter中获取当前路由?
实现Pinia仓库的路由相关Getter
以下是满足需求的完整Pinia仓库代码实现:
import { defineStore } from 'pinia' import { useRoute } from 'vue-router' export const useSidebarStore = defineStore('sidebar', { state: () => { return { full: true // 可通过点击侧边栏切换按钮触发状态变更 } }, getters: { // 返回当前路由实例的getter currentRoute() { return useRoute() }, // 判断当前路由为settings时次级侧边栏是否展开 secondarySidebarOpen(_, getters) { // 根据实际路由配置调整判断条件,比如用路由name或path // 示例:匹配path为'/settings'的路由 return getters.currentRoute.path === '/settings' // 若用路由name匹配,可改为: // return getters.currentRoute.name === 'settings' } }, actions: { } }) export default useSidebarStore
代码说明:
- currentRoute Getter:通过
vue-router提供的useRoute()获取当前路由实例,Pinia会自动跟踪路由的响应式变化,确保该getter能实时返回最新路由状态。 - secondarySidebarOpen Getter:依赖
currentRoutegetter,通过判断当前路由的path或name是否为settings,返回次级侧边栏的展开状态。请根据项目实际的路由配置调整判断条件。
内容的提问来源于stack exchange,提问作者Julien Reszka
相关产品推荐
相关产品推荐

