首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue3 Pinia商店在初始化前无法访问“存储”

Vue3 Pinia商店在初始化前无法访问“存储”
EN

Stack Overflow用户
提问于 2022-08-20 22:43:34
回答 1查看 651关注 0票数 0

我有一个UserStore,它包含关于当前用户的一些信息。这家商店还负责进出。

为了使getter可用,我将getter映射到我的Vue组件中的计算属性。

不幸的是,我看到一个错误,它在初始化之前不能访问useUserStore。

这是我的组成部分:

代码语言:javascript
复制
<template>
  //...
</template>

<script>
import {mapState} from "pinia"
import {useUserStore} from "../../stores/UserStore.js";
import LoginForm from "../../components/forms/LoginForm.vue";

export default {
  name: "Login",
  components: {LoginForm},
  computed: {
    ...mapState(useUserStore, ["user", "isAuthenticated"]) //commenting this out makes it work
  }
}
</script>

这是我的店:

代码语言:javascript
复制
import { defineStore } from 'pinia'
import {gameApi} from "../plugins/gameApi.js"
import {router} from "../router.js";

export const useUserStore = defineStore("UserStore", {
    persist: true,
    state: () => ({
            authenticated: false,
            _user: null
    }),

    getters: {
        user: (state) => state._user,
        isAuthenticated: (state) => state.authenticated
    },

    actions: {
        async checkLoginState() {
            // ...
        },
        async loginUser(fields) {
            // ...
        },
        async logutUser() {
            // ...
        }
    }
})

还有我的main.js

代码语言:javascript
复制
import {createApp} from 'vue'
import App from './App.vue'
import gameApi from './plugins/gameApi'
import {router} from './router.js'
import store from "./stores/index.js";

createApp(App)
    .use(store)
    .use(router)
    .use(gameApi)
    .mount('#app')

最后,我的商店配置:

代码语言:javascript
复制
import {createPinia} from "pinia"
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import {useUserStore} from "./UserStore.js";

const piniaStore = createPinia()
piniaStore.use(piniaPluginPersistedstate)

export default {
    install: (app, options) => {
        app.use(piniaStore)

        const userStore = useUserStore()
        const gameStore = useGameStore()
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-22 03:44:25

我无法使用与Vuex类似的“旧”方式初始化商店。相反,我不得不使用setup()函数多古半夏

代码语言:javascript
复制
<script>
import {useUserStore} from "../../stores/UserStore.js";

export default {
  name: "RegisterForm",

  setup() {
    // initialize the store
    const userStore = useUserStore()
    return {userStore}
  },

  data() {
    return {
      // ...
    }
  },

  methods: {
    checkLoginState() {
      this.userStore.checkLoginState()
    }
  }
}
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73430553

复制
相关文章

相似问题

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