How to use mapState function in typescript syntax when using vuex?

前端 未结 2 935
温柔的废话
温柔的废话 2021-02-19 05:59

I\'m using typescript syntax in my vuejs project that integrated with vuex. I want to use mapState method as computed in my .ts file but I got a syntax error. Currently I am usi

2条回答
  •  我寻月下人不归
    2021-02-19 06:10

    You may call mapState within the Component annotation:

    import { Component, Vue } from 'vue-property-decorator';
    import { mapState } from 'vuex';
    
    @Component({
      // omit the namespace argument ('myModule') if you are not using namespaced modules
      computed: mapState('myModule', [ 
        'count',
      ]),
    })
    export default class MyComponent extends Vue {
      public count!: number; // is assigned via mapState
    }
    

    You may also use mapState to create new computeds based off of your state:

    import { Component, Vue } from 'vue-property-decorator';
    import { mapState } from 'vuex';
    import { IMyModuleState } from '@/store/state';
    
    @Component({
      computed: mapState('myModule', {
        // assuming IMyModuleState.items
        countWhereActive: (state: IMyModuleState) => state.items.filter(i => i.active).length,
      }),
    })
    export default class MyComponent extends Vue {
      public countWhereActive!: number; // is assigned via mapState
    }
    

提交回复
热议问题