Javascript 此上下文未提供给导出的模块

Javascript 此上下文未提供给导出的模块,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我对这个问题的提法感到不满。鼓励你提出改进建议。另外,请记住,由于无知(无知导致烦恼),我可能对hte问题的诊断存在缺陷。很抱歉 在中,建议使用this.$store.xxx,它在我的代码中失败,因为this未定义。我强烈怀疑代码作者(也就是我)做了一些愚蠢的事情,所以我将展示我的组件布局示意图 其目的是我有一个登录页index.js,它创建两个组件——一个用于应用程序的视觉效果,另一个用于信息存储。可视化应用程序将包括一个导航栏(以及稍后的渲染区域)。导航栏将向存储区(和查看区域)发送命令,呈

我对这个问题的提法感到不满。鼓励你提出改进建议。另外,请记住,由于无知(无知导致烦恼),我可能对hte问题的诊断存在缺陷。很抱歉

在中,建议使用
this.$store.xxx
,它在我的代码中失败,因为
this
未定义。我强烈怀疑代码作者(也就是我)做了一些愚蠢的事情,所以我将展示我的组件布局示意图

其目的是我有一个登录页index.js,它创建两个组件——一个用于应用程序的视觉效果,另一个用于信息存储。可视化应用程序将包括一个导航栏(以及稍后的渲染区域)。导航栏将向存储区(和查看区域)发送命令,呈现不同的*.vue文件,显示表格、列表等

那么,我怎么会看到这是未定义的文本呢?是我的结构完全有缺陷,还是我只是遗漏了一些小细节

index.js

import Vue from "vue"
import Store from "./vuex_app/store"
import App from "./vuex_modules/app.vue"
new Vue({ el: "#app-base", components: { App }, store: Store });
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const state = { ... };
const mutations = { ... };
export default new Vuex.Store({ state, mutations });
export const updateData = ({dispatch}, data) => { 
  console.log("invoked updateData"); 
  dispatch("UPDATE_DATA", data); 
};
store.js

import Vue from "vue"
import Store from "./vuex_app/store"
import App from "./vuex_modules/app.vue"
new Vue({ el: "#app-base", components: { App }, store: Store });
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const state = { ... };
const mutations = { ... };
export default new Vuex.Store({ state, mutations });
export const updateData = ({dispatch}, data) => { 
  console.log("invoked updateData"); 
  dispatch("UPDATE_DATA", data); 
};
app.vue

<template><div id="app">App component<navigation></navigation></div></template>
<script>
import navigation from "./navigation.vue"
export default { components: { navigation } }
</script>
<template><div id="nav-bar"><p v-on:click="updateData">Update</p></div></template>
<script>
import { updateData } from "../vuex_app/actions";
export default {
  vuex: {
    actions: { updateData },
    getters: { ... }
  },
  methods: {
    updateData: () => { 
      console.log("this is " + this);
      this.$store.dispatch("updateData");
    }
  }
}
</script>
提供了一个非常好的反应式、最低限度的JavaScript框架。不幸的是,可能会有一些不寻常的使用要求。在这种情况下,

不要在实例属性或回调上使用箭头函数(例如。 vm.$watch('a',newVal=>this.myMethod()))。正如箭头函数一样 绑定到父上下文,
将不会作为Vue实例 您可能希望,
this.myMethod
将是未定义的


可能
不在实例属性上使用箭头函数。。。由于箭头函数绑定到父上下文,因此这将不是您预期的Vue实例,并且此.myMethod将未定义。
per可能是这样吗?哦,谢谢你的发帖。。这让我开始调查vue.js…@zipzit很高兴能满足你的好奇心,呵呵。也谢谢你的+1。我会马上调查这一部分,但无论如何,我觉得奇怪的是,这是未定义的。我能看出它与预期值有多大的不同,但什么都不是…?@zipzit我欠你一个比萨饼。这就是问题所在。可能还有更多——我还没有测试整个流程——但这绝对是一个不错的尝试。现在,如果你能对我的设置架构表达一些感受,我洗耳恭听。或者,更确切地说,是所有人的眼睛。你的问题解决与这里的
有关吗?一个问题是,当你已经将你的商店连接到index.js中的vue应用程序时,为什么在navigation.vue中有vex:{…}?关于整个设置,我觉得总体上不错。你可以看到更多的例子,尤其是这个和你的更相似。你也可以从中生成一个脚手架并查看它的结构,我相信它和你的完全一样。我甚至在他们的网页上找到了其他信息(我一定是第一次因为精神负荷过大而错过了这些信息)。很明显,Vue不是MVC框架,而是MVVM。我没有意识到这一点。谢谢,伙计!