Pinia的Store运行时定义ID

简介: Pinia的Store运行时定义ID

Pinia的Store的ID是全局唯一的标识符,但是在实际应用当中,我可能需要复用这一个State,举一个例子:我们现在有一个用户详情页,它下面有多个Tab页,那么我就定一个Store去在组件之间去共享数据,如果只能够开一个用户的详情页,那也就罢了,但是,假如我现在需要多开用户详情页,那么就不好玩了,在这个时候,我需要id可变,就像这样的:user-detail-{userId}.


import { defineStore } from'pinia';
interfaceCounterState {
counter: number;
}
exportconstuseCounterStore=function(id: string) {
returndefineStore(id, {
state: (): CounterState=> ({
counter: 0,
    }),
getters: {
getCounter(): number {
returnthis.counter;
      }
    },
actions: {
increment() {
this.counter++      },
randomizeCounter(){
this.counter=Math.round(100*Math.random())
      },
    },
  })();
}


使用:

import { useCounterStore } from'@/stores/test';
conststore=useCounterStore("main-1")
console.log('before', store.getCounter);
store.randomizeCounter();
console.log('after', store.getCounter);
目录
相关文章
|
7月前
|
自然语言处理 JavaScript
vue element plus Config Provider 全局配置
vue element plus Config Provider 全局配置
152 0
|
JavaScript
Vue Antdv 列表(table、list)自定义空数据状态UI
Vue Antdv 列表(table、list)自定义空数据状态UI
637 0
|
2月前
|
存储 JavaScript
vue——store全局存储
【10月更文挑战第18天】Vuex 是 Vue.js 应用中非常重要的一个工具,它为我们提供了一种有效的状态管理方式。通过合理地使用 Vuex,我们可以更好地组织和管理应用的状态,提高应用的开发效率和质量。
60 1
|
4月前
|
JavaScript IDE 开发工具
找不到模块“./App.vue”或其相应的类型声明。ts(2307)
这篇文章介绍了在Vue 3 + TypeScript + Vite开发环境中解决找不到`.vue`文件模块或其类型声明错误的两种方法:使用VSCode的TypeScript Vue Plugin (Volar)插件或手动在`env.d.ts`文件中声明`*.vue`模块类型。
558 0
找不到模块“./App.vue”或其相应的类型声明。ts(2307)
|
7月前
Vite中使用 Model绑定组件值
Vite中使用 Model绑定组件值
51 0
|
7月前
|
JavaScript
状态管理之Vuex (三) store利用module拆分
状态管理之Vuex (三) store利用module拆分
72 0
|
Java 数据库 OceanBase
,Store组件的JVM参数
,Store组件的JVM参数
174 1
【vue2小知识】实现store中modules模块的封装与自动导入
store仓库中分模块时的需要每次导入index的问题
【vue2小知识】实现store中modules模块的封装与自动导入
|
开发者
ipa上传到app store的方法
假如你没有mac电脑,将ipa上传到苹果开发者中心,生成构建版本在以前是一个比较麻烦的活,但是现在有现成的免费工具可以将ipa上传到苹果开发者中心,并生成构建版本。