首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在js文件中的组件外使用Pinia

如何在js文件中的组件外使用Pinia
EN

Stack Overflow用户
提问于 2022-01-11 18:07:29
回答 3查看 3.5K关注 0票数 3

我正在从vue 4.x迁移到pinia,我的一个文件需要存储api密钥。但是,即使我遵循皮尼亚文献,我也不能让它工作。这是我使用皮尼亚的方法

// Repository.ts

代码语言:javascript
复制
import axios from "axios";

import { createPinia } from 'pinia'
import { useAuthStore } from '../stores/auth-store'
const pinia=createPinia();
let authStore = useAuthStore(pinia);
const baseURL = 'http://127.0.0.1:5678/res-api';

export default axios.create({
  baseURL,
  headers:{"Authorization":"Bearer " + authStore.getToken,
"Accept":"application/json"},
  
});

预期结果:从商店获得令牌。

控制台错误

代码语言:javascript
复制
Uncaught ReferenceError: Cannot access 'useAuthStore' before initialization
    at Repository.ts:6:17
    

Note: this working inside a component 
EN

回答 3

Stack Overflow用户

发布于 2022-05-22 20:04:34

您可以通过在拦截器中导入存储库来解决这个问题。

代码语言:javascript
复制
import axios from "axios";
import { useAuthStore } from '../stores/auth-store';

const axiosClient = axios.create({
    baseURL: 'http://127.0.0.1:5678/res-api'
});

axiosClient.interceptors.request.use((config) => {
    const authStore = useAuthStore();
    config.headers.Authorization = `Bearer ${authStore.getToken}`;
    config.headers.Accept = "application/json";
    return config
})

export default axiosClient;

此讨论可能对您有所帮助:转到GitHub讨论

票数 4
EN

Stack Overflow用户

发布于 2022-02-09 18:43:53

根据文档,您创建的pinia必须作为app.use的参数。不仅如此,useAuthStore必须是一个用defineStore定义的存储库,并且不能接受参数。我将留下一个可以帮助您的链接,它不会创建商店,但是您可以浏览边菜单来查看几个示例。

https://pinia.vuejs.org/core-concepts/outside-component-usage.html

票数 2
EN

Stack Overflow用户

发布于 2022-02-28 02:29:29

下面是我演示这个问题的示例项目:https://codesandbox.io/s/infallible-shamir-sxrlb9

这里的主要原因是,在将皮尼亚的商店传递给Vue的应用程序之前,你不能使用它。因此给出了以下代码:

代码语言:javascript
复制
const pinia = createPinia(); // line 1

createApp(App).use(pinia).mount("#app"); // line 2

您不能在第1行和第2行之间触发任何存储,但只能在第2行之后触发。

在代码中,很可能会在创建Vue app /将Pinia添加到Vue应用程序之前触发axios调用。请在Vue应用程序的安装完成后,尝试延迟axios调用来触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70671463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档