vuex.esm.js?2f62:1023 [vuex] unknown getter: doneTodos

发布于 2022-09-12 22:39:35 字数 1184 浏览 14 评论 0

代码如下所示怎么修改?
login.vue

<template>
  <div>
    <el-button type="primary" plain>主要按钮</el-button>
    <div>{{ doneTodos }}</div>
  </div>
</template>
<script lang="ts">
import Vue from "vue";
import { mapGetters, mapActions } from "vuex";
export default Vue.extend({
  created() {
    console.log("111111", this.$store.state.mainStore.test);
  },
  computed: {
    ccc() {
      return "nnnn";
    },
    ...mapGetters(["doneTodos"]),
  },
});
</script>
<style lang="scss" scoped>
</style>

image.png
main.ts中内容

const mainStore = {
    namespaced: true,
    state: {
        test: "aaa",
    },
    getters: {
        doneTodos: (state: any) => {
            return state.test.length;
        }
    }
}
export default mainStore;
import Vue from "vue";
import Vuex from "vuex";
import mainStore from './modules/main';

Vue.use(Vuex);



export default new Vuex.Store({
  // state: {},
  // mutations: {},
  // actions: {},
  modules: {
    mainStore,
  }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

dawn曙光 2022-09-19 22:39:35

Vuex 中的 state 和 Vue 中的 data 遵循相同规则,data 必须声明为返回一个初始数据对象的函数。

因为使用了 modules, 所以 store 中的 state 写法有问题,导致 getter 中没有导出 test,改成以下试试:

const mainStore = {
    namespaced: true,
    state: () => ({
        test: "aaa",
    })
    ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文