У меня следующие настройки для действий:

get1: ({commit}) => {
  //вещи
  this.get2 (); // это мой вопрос!
},
get2: ({commit}) => {
  //вещи
},

Я хочу иметь возможность вызывать одно действие из другого, поэтому в этом примере я хочу иметь возможность вызывать get2 () изнутри get1 (). Возможно ли это, и если да, то как я могу это сделать?

muttley91

Ответов: 5

Ответы (5)

У вас есть доступ к методу dispatch в объекте, переданном в первом параметре:

get1: ({фиксация, отправка}) => {
  отправка ('get2');
},

Это описано в документации.

мы можем передавать параметры и при отправке.

отправка ('fetchContacts', user.uid);
экспортные действия = {
  GET_DATA (контекст) {
     // делаем что-нибудь
     context.dispatch ('GET_MORE_DATA');
  },

  GET_MORE_DATA (контекст) {
    // делаем больше вещей
  }
}

для действий, не требующих полезной нагрузки

действия: {
    ДО: async (context, payload) => {
    },
    ПОСЛЕ: async (context, payload) => {
        ждать context.dispatch ('ПЕРЕД');
    }
}

для действий, требующих полезной нагрузки

действия: {
    ДО: async (context, payload) => {
    },
    ПОСЛЕ: async (context, payload) => {
        var payload = {} // подготавливаем полезную нагрузку
        ждать context.dispatch ('ПЕРЕД', полезная нагрузка);
    }
}

Вы можете получить доступ к методу отправки через первый аргумент (контекст):

экспорт констант действий = {
  get ({commit, dispatch}) {
    отправка ('действие2')
  }
}

Однако, если вы используете namespaced, вам необходимо указать параметр:

экспорт констант действий = {
  get ({commit, dispatch}) {
    отправка ('действие2', {}, {корень: истина})
  }
}

2022 WebDevInsider