我收到以下错误。
[Vue 警告]:属性或方法“updateData”未在实例上定义,但在渲染期间被引用。确保在 data 选项中声明反应数据属性。
据我通过代码可以看出,该方法就在那里,所以由于我对 Vuex 的无知,我被困在我想念的东西上。我用谷歌搜索了这件事并得到了很多答案,但没有一个让我更明智地做什么。这似乎是有范围的东西,我感觉到了。
我也收到以下错误,但我怀疑这两者的根本原因相同,因此解决一个将解决另一个。
[Vue 警告]:事件“单击”的无效处理程序:未定义(在...的组件中找到)
标记如下。我已经检查了路径是否到达了正确的位置。目前我完全不确定如何开始对其进行故障排除。任何提示将不胜感激。
<template>
<div id="nav-bar">
<ul>
<li @click="updateData">Update</li>
<li @click="resetData">Reset</li>
</ul>
</div>
</template>
<script>
import { updateData, resetData } from "../vuex_app/actions";
export default {
vuex: {
getters: { activeDataRow: state => state.activeDataRow },
actions: { updateData, resetData }
}
}
</script>
编辑
输入后,我改进了导出以包含这样的方法属性。(但仍然存在相同的错误。)
export default {
vuex: {
getters: { activeDataRow: state => state.activeDataRow },
actions: { updateData, resetData },
methods:{
updateData: () => this.$store.dispatch("updateData"),
resetData: () => this.$store.dispatch("resetData")
}
}
}
我必须在商店里做一些额外的事情吗?它看起来像这样。
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const state = { dataRows: [], activeDataRow: {} };
const mutations = {
UPDATE_DATA(state, data) { state.dataRows = data; state.activeDataRow = {}; },
RESET_DATA(state) { state.dataRows = []; state.activeDataRow = {}; }
};
export default new Vuex.Store({ state, mutations });