我想知道在Typescript vue类组件中使用...mapActions([])的正确方法是什么.

我就是这样做的:

<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import { mapActions } from "vuex";

@Component
export default class UsersAdd extends Vue {
  userName: string = "";

    ...mapActions(["newUser"]) /*mapAction from vuex */
  addUser() {
    console.log("...adding new user");
    this.newUser(this.userName);
  }
}
</script>

正如你所看到的,它不起作用了...

Javascript美元我就这么做了.

methods:{
  ...mapActions(["newUser"])
}

我如何使用Typescript类组件实现这一点?

Edit:

@Component({
  methods: {
    ...mapActions(["newUser"]) /*mapAction from vuex */
  }
})
export default class UsersAdd extends Vue {
  userName: string = "";

  addUser() {
    console.log("...adding new user");
    this.newUser(this.userName);
  }
}

推荐答案

如果你不想带来另一种依赖(即vuex-class).我们可以将存储中的操作映射到Typescript中的组件,如下所示:

@Component({
  computed: {
    ...mapActions({
      someLoadDataAction: "someLoadDataAction"
    })
  }
})
export default class HelloWorld extends Vue {
  someLoadDataAction!: () => any;

  mounted() {
    console.log(this.someLoadDataAction);
  }
}

关键是为Typescript添加someLoadDataAction!: () => any用于静态类型判断.例如,我们将函数类型定义为() => any,但您可以将其从vuex存储中的操作更改为实际返回类型.

Vue.js相关问答推荐

如何修复IntersectObserver导致我的OpenLayers Web应用程序中内存泄漏的问题?

如何禁用Vuetify v—stepper操作按钮

如何使用Nuxt 3动态处理无限嵌套路由?

为什么元素会从Vue 3中的TransitionGroup左上角出现?

使用 vue / nuxt js 切换 fontawesome 图标

Vue 和 Nuxt 之间生命周期钩子的不同行为

v-slot: activator 中 {attrs} 参数的作用是什么?

带有 netlify.toml 文件的环境变量

Vue:根元素内容和内容分发槽

从组件的 内的组件调用方法

如何从我的 Vuetify 数据表中正确更新 Vuex 状态

如何将 Nuxt.js 更新到最新版本

动态注册本地 Vue.js 组件

基于条件的VueJS HTML元素类型

将 SignalR 与 Vue.js 和 Vuex 集成

使用 Firebase Auth for Google 将匿名用户转换为注册用户

更改时(change)调用函数

Vuetify - 如何进行分页?

Vuetify 离线文档

居中 v-toolbar-title