首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vuex-class:在Vue组件外部访问Vuex

vuex-class:在Vue组件外部访问Vuex
EN

Stack Overflow用户
提问于 2020-01-17 17:04:03
回答 1查看 3K关注 0票数 3

如何使用vuex-class在Vue组件之外访问Vuex?

在正常情况下,它非常简单:

代码语言:javascript
复制
// some JS file
import store from './../store'; // path to Vuex store

store.commit('ux/mutationName', somePayload)

但我使用的是vuex-class,我有Vuex模块:

代码语言:javascript
复制
import { Module } from 'vuex';
import { RootState } from '@/types/vuex/types';
import { MutationTree } from 'vuex';
import { GetterTree } from 'vuex';

const namespaced: boolean = true;

export interface UXState {
  compLoading: boolean;
}

export const state: UXState = {
  compLoading: false
};

export const mutations: MutationTree<UXState> = {
  setCompLoading(state, payload: boolean): void {
    state.compLoading = payload;
  }
};

export const getters: GetterTree<UXState, RootState> = {
  compLoading(state): boolean {
    return state.compLoading;
  }
};

export const ux: Module<UXState, RootState> = {
  namespaced,
  state,
  mutations,
  getters
};

Fom Vue组件I可以通过这种方式存储突变:

代码语言:javascript
复制
<script lang="ts">
  import axios from 'axios';
  import {Component, Vue} from 'vue-property-decorator';
  import {Mutation} from "vuex-class";
  const namespace: string = "ux";

  @Component({
    name: 'CompName'
  })
  export default class AppNavigationBar extends Vue {

    @Mutation('setCompLoading', { namespace })
    setCompLoading!: (flag: boolean) => void;

    async created() {
      this.setCompLoading(true);
      const resp = await axios.get('someURL');
      this.setCompLoading(false);
    }
  }
</script>

如何在Vue组件之外使用vuex-class和TS访问突变?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-26 21:58:03

即使您使用的是vuex-class,您仍然可以使用旧方法进行突变:

代码语言:javascript
复制
import store from './../store';

store.commit('module/mutationName', payload);

或者,如果您更喜欢直接使用键入的突变:

代码语言:javascript
复制
import state from './../store/state';
import { MUTATION_NAME } from  './../store/mutations'; // Or wherever you have them

MUTATION_NAME(state, payload);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59784122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档