[Vuex] Create a Vuex Store using TypeScript

Posted answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Vuex] Create a Vuex Store using TypeScript相关的知识,希望对你有一定的参考价值。

A Vuex store centralizes the state of your app, making it easy to reason about your state flow.

In this lesson we’ll see how we can create a Vuex store using TypeScript and use it on you class-based component by using the @State decorator from Vuex Class

 

Install:

npm i vuex vuex-class --save

 

Create store folder and index.ts, todos.ts file:

//store/index.ts

import Vue from vue;
import Vuex from vuex;

import todos from ./todos;

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    ...todos,
  },
  mutations: {

  },
  actions: {

  },
});


// store/todos.ts
import {State} from ../types;

const state: State = {
    todos: [
        {text: Buy milk},
    ],
};

export default state;

 

Define the State interface:

// types.ts

export interface Todo {
    text: string;
}

export interface State {
    todos: Todo[];
}

 

Using Store in main.ts:

import ./hooks;

import Vue from vue;
import App from ./App.vue;
import router from @/router;
import store from @/store/index;
import @/registerServiceWorker;
Vue.config.productionTip = false;


new Vue({
  router,
  store,
  render: (h) => h(App),
}).$mount(#app);

 

Create a Todos.vue component:

<template>
    <ul>
      <li v-for="todo in todos">{{ todo.text }}</li>
    </ul>
</template>

<script lang="ts">
import {Component, Vue} from vue-property-decorator;
import {State} from vuex-class;
import {Todo} from ../types;

@Component({
})
export default class Todos extends Vue {
    @State todos: Todo[]
}
</script>

 

See the commit

以上是关于[Vuex] Create a Vuex Store using TypeScript的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在其动作或突变中获取 nameSpaced vuex 模块的名称?

如何在 Store Vuex 中加载 DOM 之前调用 api?

简述Vuex(重要)

Vuex在TSX中的改造方案:TS改造Vue2项目Vuex如何处置?

简易版Vuex源码实现

一文让你看懂什么是vuex