当前位置: 首页 > 知识库问答 >
问题:

Vuex这个$子组件中未定义存储

尉迟招
2023-03-14

我想做一个简单的Vuex应用程序,这里是我的文件:

main.js

/* eslint-disable no-unused-vars */
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import Vuex from 'vuex'
import App from './App'
import router from './router'
import BootstrapVue from 'bootstrap-vue'

// TODO make it work with css-loader, dunno why it's not working at my environment
import '../node_modules/bootstrap/dist/css/bootstrap.css'
import '../node_modules/bootstrap-vue/dist/bootstrap-vue.css'

Vue.use(BootstrapVue)

Vue.config.productionTip = false

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    isLogged: false
  },
  mutations: {
    logIn (state) {
      state.isLogged = true
    },
    logOut (state) {
      state.isLogged = false
    }
  }
})

store.commit('logIn')
console.log('main', store.state.isLogged)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  store,
  router,
  components: { App },
  template: '<App/>'
})

应用程序。vue

<template>
  <b-container>
    <b-row align-h="center">
      <b-col cols="4">
        <div id="app">
          <router-view/>
        </div>
      </b-col>
    </b-row>
  </b-container>
</template>

<script>
// import store from './store'
// store.commit('logOut')
console.log('app', this.$store)
export default {
  // name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

此外,我正在使用vue路由器:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import Login from '@/components/Login'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/login',
      name: 'Login',
      component: Login
    }
  ]
})

在初始化主存储之后。js和应用程序中的注入。vue组件对此进行了测试$在应用程序中存储变量。vue未定义;但同时在主要方面。一切都好。

还试图从商店A导入pp.vue(后来我在商店中存储商店/index.js)制作新的商店,而不改变状态main.js.

共有2个答案

凤凡
2023-03-14

在您试图访问此文件的位置$存储不指向Vue实例。

您可以在Vue实例的一个生命周期钩子中访问存储(例如,创建的):

created() {
  console.log(this.$store);
}
冯玮
2023-03-14

您的控制台。日志('app',this.$store)不在您的导出默认值{}

在任何情况下,$存储区代码应放在以下任何一个区域内:

computed(){}

安装代码

方法:{}

 类似资料:
  • 所以,每次vuex中的状态不为null时,我都试图更新组件中的一些数据。我用laravel设置了一个API路由,在用户登录后返回用户信息。 API路线: Vuex: 所以在我的应用程序中。vue,在created方法中,如果令牌存在,我将使用http响应作为有效负载提交SET_AUTH_USER。 应用程序。vue: 到目前为止,一切正常。每次我刷新页面,只要我的本地存储中有一个令牌,用户对象将永

  • 我是Python的初学者,我正在尝试使用Tweepy来保存一些tweet,在这样做的过程中,我很难将它们写入一个文件。 我得到了保存文件未定义的错误。 类监听器(StreamListener): auth=OAuthHandler(使用者密钥,使用者密钥)auth。设置\u访问\u令牌(访问\u令牌、访问\u令牌\u密钥) twitterStream=流(auth,listener())twitt

  • 为此我要拔头发。我是一个Vue新手,并试图建立一个用户选择器。 User Selector组件是一个子组件,它应该显示vuex存储中的所有用户,然后我有一个@change处理程序来更新vuex存储中的currentUser变量。 我认为我正确地使用了动作和突变,但由于某些原因,它不会将currentUser设置为有效负载。 用户选择器。vue 我的store.js如下: 有人能告诉我我做错了什么吗

  • 我正在学习编写用于JavaFX8和Scene Builder的FXML自定义组件。 我编写了如下所示的FXML文件,但Scene Builder不会打开它,由于出现异常,给出消息“open operation has Failed”:

  • 问题内容: 我正在为自己的目的创建Electron应用程序。我的问题是,当我在HTML页面中使用节点函数时,它引发以下错误: 未定义’require()’。 有没有办法在我所有的HTML页面中使用Node功能?如果可能的话,请给我举个例子,或者提供一个链接。以下是我要在HTML页面中尝试使用的变量: 这些是我在Electron的所有HTML窗口中使用的值。 问题答案: 从版本5开始,默认值从tru

  • 我正在编写一组定制的PrimeFaces组件,使用PrimeFaces5.0,并在JBoss EAP6.2中运行。 null 2.2在myFaceStest.taglib.xml中,我定义了输入标记: 2.3在input.java(我的自定义组件)中,我执行以下操作: 2.4此组件的呈现器包含以下内容: 给定这种设置,为什么自定义组件不会呈现?我的jboss日志中没有任何内容,即使日志级别设置为d