在优化vue的过程中,看到目前为止官方推荐的数据管理工具是pinia,而我使用的是vuex
pinia的迁移非常快捷方便
所以接下来简要说明一下迁移过程中遇到的问题
迁移问题
getActivePinia was called with no active Pinia. Did you forget to install pinia
根据官网迁移后,项目运行报以上错误
首先,我在main.ts已经初始化了的
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
const pinia = createPinia()
const app = createApp(App)
app.use(pinia)
以下是 project-pinia.ts 文件
export const useProjectStore = defineStore('project', {
state: () => ({
appName:"",
lang:"",
loginUser:{
}
})
})
对pinia的引用
const store = useProjectStore()
经过分析后发现是对pinia的引入如果早于app.use(pinia)
就会报以上错误,可以仔细查找一下所有使用pinia的地方,是否有在创建以前就调用的,尤其是全局调用,例如在router等设置文件中设置或使用
例如:
//pinia方式
store.lang="zh_CN"
因为vuex在router文件或者main入口文件中,在app.use(store)
之前设置是不会报错的,所以如果直接替换成pinia方式,会导致以上错误
//vuex方式
store.commit("setLang","zh_CN")