IT

서비스 파일의 디스패치 돌연변이

itgroup 2023. 6. 17. 09:01
반응형

서비스 파일의 디스패치 돌연변이

나는 있습니다.ApiService()API 호출을 추상화하는 중입니다.그러고 싶어요.dispatch('SET_BUSY')그리고.dispatch('SET_NOT_BUSY')서비스 내에서 앱 레벨 돌연변이가 발생하지만 다음 오류가 발생합니다.

TypeError: dispatch is not a function. (In 'dispatch('SET_BUSY')', 'dispatch' is undefined)

/vuex/sys.js

import { ApiService } from './services';

export const setAppMode = function ({ dispatch }) {
  ApiService({
    noun: 'Application',
    verb: 'GetMode'
  }, response => {
    dispatch('SET_APP_MODE', response.Data.mode);
  },
  dispatch);
};

/vuex/services.제이에스

import Vue from 'vue';

export const ApiService = (options = {}, callback, dispatch) => {
  let endpoint = 'localhost/api/index.php';
  let parameters = options.data;

  dispatch('SET_BUSY');

  Vue.http.post(endpoint, parameters, []).then((promise) => {
    return promise.text();
  }, (promise) => {
    return promise.text();
  }).then(response => {
    response = JSON.parse(response);

    dispatch('SET_NOT_BUSY');

    if (response.Result === 'ERROR') {
      console.log('ERROR: ' + response.Error.Message);
    }

    callback(response);
  });
};

작업 함수는 저장소 인스턴스를 첫 번째 매개 변수로 예상합니다.이 작업은 일반적으로 Vuex에서 자동으로 수행됩니다.

Vue 인스턴스에서 작업을 사용하는 경우 Vuex 1에서 작업을 수행하는 방법은 다음과 같습니다.

import { setAppMode } from './actions'

new Vue({
  vuex: {
    actions: {
      setAppMode
    }
  }
})

이제 사용할 수 있습니다.this.setAppMode()첫 번째 인수로 스토어를 자동으로 사용할 수 있도록 합니다.

참고: 또한 다음을 설정해야 합니다.storeVM 속성

import store from `./store`

// and inside the VM options:
{ 
    store: store
}

한다면storevm 인스턴스로 설정되지 않았지만 수동으로 매개 변수로 전달할 수 있습니다.

this.setAppMode(store);

언급URL : https://stackoverflow.com/questions/39835451/dispatch-mutations-from-service-file

반응형