vue.js - Vuex 无法读取未定义的属性 'state'

标签 vue.js vuex vuejs3 vuex4

我是 Vue 的新手,我遇到了一个错误,不明白为什么以及如何解决这个问题。 我在控制台中得到的错误是:Cannot read property 'state' of undefined

我正在使用 vue 版本 @vue/cli 4.5.12

这是我的文件:

ma​​in.js

import { createApp } from 'vue'

import App from './App.vue'
import router from './router.js'
import {store} from './store.js'

const app = createApp(App)

app.use(router, store)

app.mount('#app')

store.js

import { createStore } from 'vuex'

const store = createStore ({
    state() {
        return {
            socialIcons: {
                github: {
                    icon: "/../assets/images/Github.svg",
                    name: "Github",
                    link: "https://github.com/Roene"
                },
                linkedin: {
                    icon: "/../assets/images/LinkedIn.svg",
                    name: "Linkedin",
                    link: "https://www.linkedin.com/in/roene-verbeek/"
                },
                instagram: {
                    icon: "/../assets/images/Instagram.svg",
                    name: "Instagram",
                    link: "https://www.instagram.com/roeneverbeek/"
                }
            }
        }
    }
})
export default store

Home.vue

<template>
    <section class="home">
        <div class="title">
            <h1 class="nameTitle">{{name}}</h1>
            <h2 class="jobTitle">{{jobTitle}}</h2>
            <div class="icons">
                <div class="icon">
                    <a
                        target="_blank"
                        v-for="icon in socialIcons"
                        class="icon"
                        :href="icon.link"
                        :key="icon.name"
                    >
                        <span class="iconName">{{icon.name}}</span>
                        <img class="iconImage" :src="icon.icon" :alt="icon.name">
                    </a>
                </div>
            </div>
        </div>
        <div class="photo">
        </div>
    </section>
</template>

<script>
export default {
    data() {
        return {
            name: "Roene Verbeek",
            jobTitle: "Front-end developer",
            socialIcons: this.$store.state.socialIcons
        }
    }
}
</script>

谁能告诉我为什么会出现此错误以及如何修复此错误?

最佳答案

use 方法接受一个插件作为第一个参数和选项(可选)作为第二个app.use(plugin, itsOptions),所以你应该这样做:

 import store from './store.js'// without {} since you did export default in your store
  ...
  app.use(router).use(store)

socialIcons 必须是计算属性:

export default {
    data() {
        return {
            name: "Roene Verbeek",
            jobTitle: "Front-end developer",
            
        }
    },
computed:{
    socialIcons(){
          return this.$store.state.socialIcons
     }
}
}

关于vue.js - Vuex 无法读取未定义的属性 'state',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67056563/

相关文章:

vue.js - 如何在 vuex nuxt 中获取嵌套 getter

javascript - 有没有一种很好的方法可以使用 Vue 路由器将 props 传递给父组件?

php - 如何将 Vuex 添加到我的 Laravel Nova 工具?

vue.js - 如何以编程方式添加 Vue 3 组件?

javascript - 尝试将嵌套的 JSON 数据提取到 javascript/尝试消除 JSON 中的键但保留数据

javascript - 在没有 bundler 的情况下使用 Vue?

javascript - 如何在vuejs中的输入文本中添加禁用属性?

javascript - 为动态创建的组件分离 vuex 存储

javascript - Vuex:getter 应该是函数,但模块 "getters.default"中的 "customer"是 {}

javascript - 从 vuex 状态数组中创建计算属性数组以在 v-model 中使用