vue3 pinia使用规范?

image.png

image.png

这两个地方的上下文有什么特别的吗?为什么第一种写法会报错呢。提示:
image.png

阅读 3k
2 个回答

这一点,和 Pinia 的实现有关。

这一类 useXxx() 都是在 setup() 阶段使用的。当你使用 Pinia 时,它需要和对应的组件产生关联,也可以说是和组件之间进行绑定。

而报错提醒你的是,你在组件之外使用该函数,它就不知道该找哪个组件进行绑定,导致数据无处安放。

先说下区别,第二种方法你只是导出了一个 store 的句柄,并没有执行它来获得 store,所以无论你放在哪儿导出都不会报错, 因为根本就没有执行任何逻辑。而第一种是在模块内执行了句柄获取了 store 再导出,也就意味着在你首次导出这个模块的地方,store 就会被初始化

而你截图的报错也很明显,就是你在 app.use(createPinia()) 注册 pinia 之前导入了 @/store/popups.js 这个模块

解决方案就是你把 @/store/popups.js 的导入时机放在 app.use(createPinia()) 之后就行了

这在 pinia 的官方文档上也有描述(https://pinia.web3doc.top/core-concepts/outside-component-usa...
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题