Pinia的ID问题

183 阅读2分钟

问题复现

我请求1:获得了第四个数据
我请求2:获得了第四个数据
但,这四个数据竟然同时放进了一个stateimage.png
可以看出:上边重复了一遍

究其原因

他们的id是相同的,我在store文件里写的是

export const useItemStore = defineStore<string,State,{},Actions>('items',{})

他们有共同的ID :items,就是它导致的问题

解决办法

改写成高阶函数:
image.png
所以我在引用的时候传入一个不唯一的值不就好了?

const itemStore = useItemStore(`items-${props.startData}`)

这样成功解决了ID问题!

文档说明

Pinia 是一个状态管理库,它允许您在 Vue.js 应用程序中定义和使用多个独立的状态存储。每个状态存储都有一个唯一的 ID,这个 ID 可以在全局范围内用于访问这个状态存储。如果您在使用 Pinia 时遇到了 ID 的问题,可能是由以下原因导致的:

  1. 重复的 ID:Pinia 要求每个状态存储都有一个唯一的 ID,如果您在定义状态存储时使用了重复的 ID,会导致冲突。请确保每个状态存储都有不同的 ID。
  2. ID 的格式问题:Pinia 要求状态存储的 ID 必须是字符串,并且只能包含 ASCII 字母、数字和下划线。如果您的 ID 不符合这个要求,可能会导致问题。请检查您的 ID 是否符合格式要求。
  3. 未注册的 ID:如果您在应用程序的其他地方使用了一个未注册的状态存储 ID,Pinia 将无法找到这个状态存储,从而导致问题。请确保您的应用程序中所有的状态存储 ID 都已经注册。