当在js文件里引入pinia时报错:Uncaught Error: []: getActivePinia was called with no active Pinia
1、问题背景
我在一个 js 文件里需要使用 pinia 去修改状态存储里的内容,但是在引入 pinia 的时候,比如 cont store = useStore() 时发现报错:getActivePinia was called with no active Pinia.
说是实例在文件中使用的时候,pinia实例没有被挂载。发生错误的原因是因为我在js文件中
import { useStore } from '@/store'
const store = useStore()
此时,pinia并没有完成挂载。
2、解决办法
(1)我们需要在store文件下新增一个基础文件,内容为
import { createPinia } from 'pinia'
const pinia = createPinia()
export default pinia
(2)然后在你引用的页面注册
import pinia from '@/store/pinia.js'
import { useStore } from '@/store'
const store = useStore(pinia)
就可以解决了
3、具体出现的原因是:
由于在main.js中,不管怎么注册,router总是比pinia之前创建,所以,当我们在router.js中使用pinia时,就会出现pinia还未注册的提示,我们只需要重新注册就行。
4、遇到的问题
在进行上面的改动之后,我发现对状态管理的字段的修改,并没有进行响应式的变化。怎么回事呢?后来发现是因为 main.js 里注册的有问题。就是在经过上面的改造后,我们还需要把原来在 main.js 里对 pinia 进行的注册,需要进行改造下。
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createPinia } from 'pinia'
// ...
const app = createApp(App)
app.use(router).use(createPinia()).mount('#app')
// 对应的位置需要改成下面这样
import pinia from './store/pinia.js'
app.use(router).use(pinia).mount('#app')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-07-17 浅析如何使用Vue + Xterm.js + SpringBoot + Websocket / Stomp + JSch 实现一个 web terminal 网页版的终端工具
2021-07-17 浅析 JSch - Java实现的SSH通讯包:jsch作用、4种认证方式、如何配置免密登录、ssh公钥检查机制及3种选项、如何实现sftp文件传输、maven依赖及具体使用示例代码
2021-07-17 浅析如何使用SimpMessagingTemplate在应用的任意地方将websocket消息发送给客户端及遇到的循环依赖问题解决
2018-07-17 纯css解决div隐藏浏览器原生滚动条,但保留鼠标滚动效果的问题
2017-07-17 浅析webpack之shimming垫片的理解及常见场景和webpack.ProvidePlugin插件的使用
2017-07-17 代码git提交规范CommitLint使用
2017-07-17 浏览器工作原理:浅析浏览器渲染进程 - HTML、CSS和JavaScript是如何变成页面的?(下)