首页 > 解决方案 > 如何在 vue js 中访问存储值到组件

问题描述

这是我的 store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        isLoggedIn: !!localStorage.getItem('token'),
        isLog : !!localStorage.getItem('situation')
    },
    mutations: {
        loginUser (state) {
            state.isLoggedIn = true
            state.isLog = true
        },
        logoutUser (state) {
            state.isLoggedIn = false
            state.isLog = false
        },
    }
})

但是当我在 display.vue 中调用 {{state.isLoggedIn}} 时,我没有得到值。

在 display.vue 中,我使用

<script>
import axios from "axios";
import store from '../store';

export default {
  name: "BookList",
  data() {
    return {
      students: [],
      errors: [],
      state: this.state.isLoggedIn,

    };
  },
})
</script>

<template>
{{this.state}}
</template>

但是当我这样做时,我遇到了错误。请任何人都可以请帮助是什么问题。

标签: vue.jsvuejs2vue-router

解决方案


您不需要将您的商店导入到您的组件中。相反,您应该使用this.$store.

要访问存储状态,更好(也是推荐的)方法是在组件中映射状态

在您的示例中,它应该类似于:

import { mapState } from 'vuex'

export default {
    ...
    computed: {
        ...mapState({
            isLoggedIn: 'isLoggedIn'
        })
     }
}

在您的模板中,this不需要。只需按其名称调用该属性:

{{ isLoggedIn }}

推荐阅读