如何在TypeScript中使用Vuex

简介: 如何在TypeScript中使用Vuex

例如用TypeScript+VueX实现简单的点击实现加1功能

1.写入state和mutations /src/store/index.js文件代码如下

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex) // 把store 绑到 Vue.prototype
export default new Vuex.Store({
  // 相当于vue中的data
  state: {
    count: 0,
  },
  //相当于vue中的methods
  mutations: {
    vuexAdd(state) {
      state.count ++
    },
  },
})

2.于main.ts中加载store文件夹

import Vue from 'vue'
import App from './App.vue'
import store from './store'
new Vue({
  store,
  render: (h) => h(App),
}).$mount('#app')

3.于test.vue中使用

<template>
  <div>
  {{ count }}
       <button  @click="add">点我+1</button>
  </div>
</template>
<script lang="ts">
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import Button from '@/components/Button.vue'
@Component({
  computed: {
  //我们在使用Vuex中的数据,最好定义在computed计算属性中,这样变动可以即时更新
    count() {
    //使用了Vuex的state
      return this.$store.state.count
    },
  },
})
export default class test extends Vue {
  add() {
  // 使用了Vuex的mutations中定义的vuexAdd方法实现+1功能
    this.$store.commit('vuexAdd')
  }
}

e621351157aa0d1fd978b5c99a67b12.png

点击后:

60f48094ddf3eb1ef9b75f26f8d13b5.png

上面出现了一个问题,这在computed里拿出来的Vuex数据只能在template摸板中使用,在下方script里面使用就会报错,查阅文档半个小时后在Vue Class Component找到解决办法,就是利用ES6的get方法

所以我们的

computed: {
  //我们在使用Vuex中的数据,最好定义在computed计算属性中,这样变动可以即时更新
    count() {
    //使用了Vuex的state
      return this.$store.state.count
    },
}

要放到下面中,变成

export default class test extends Vue {
   get count() {
    //使用了Vuex的state
      return this.$store.state.count
   }
  add() {
  // 使用了Vuex的mutations中定义的vuexAdd方法实现+1功能
    this.$store.commit('vuexAdd')
  }
}



目录
相关文章
|
JavaScript
TypeScript 4.1 新特性:字符串模板类型,Vuex 终于有救了?
TypeScript 4.1 快要发布了,老爷子 Anders Hejlsberg[1] 加入了一项重大更新,「字符串模板类型」 的支持。昨天看到这个更新的我特别兴奋,曾几何时,只要一遇到字符串拼接相关的类型,TypeScript 就束手无策了
|
JavaScript 前端开发 API
Vue3 尝鲜 Hook + TypeScript 取代 Vuex 实现图书管理小型应用
Vue3 Beta版发布了,离正式投入生产使用又更近了一步。此外,React Hook在社区的发展也是如火如荼。 一时间大家都觉得Redux很low,都在研究各种各样配合hook实现的新形状态管理模式。
|
存储 缓存 JavaScript
小白学前端之TypeScript使用Vuex 4.0|8月更文挑战
官方介绍:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
201 0
|
存储 JavaScript 前端开发
vue高级进阶系列——用typescript玩转vue和vuex
用过vue的朋友大概对vuex也不陌生,vuex的官方解释是专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。说的简单点就是对vue的状态进行统一管理,如下图介绍了其管理模式
334 0
|
2月前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
39 1
typeScript进阶(9)_type类型别名
|
26天前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
41 0
|
26天前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
2月前
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
44 0
|
2月前
|
JavaScript
typeScript进阶(10)_字符串字面量类型
本文介绍了TypeScript中的字符串字面量类型,这种类型用来限制变量只能是某些特定的字符串字面量。通过使用`type`关键字声明,可以确保变量的值限定在预定义的字符串字面量集合中。文章通过示例代码展示了如何声明和使用字符串字面量类型,并说明了它在函数默认参数中的应用。
36 0
|
9天前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。