vuejs несколько компонентов одного файла с одной функцией sh газа - PullRequest
1 голос
/ 12 февраля 2020

У меня есть один файловый компонент, как показано ниже.

enter image description here

v

Что это делает это, как только вы вводите данные, он проверяет человека с помощью бэкэнда с помощью вызова ax ios, записанного в действии vuex. Этот компонент повторяется несколько раз. Я написал дроссельную функцию loda sh, чтобы ограничить запросы проверки в каждом компоненте, и она отлично работает.

Проблема в том, что loda sh Предел дроссельной функции применим только внутри компонента, и как только начальные данные, поступающие во 2-й компонент 1-го компонента 1-ой компоненты sh Предел дроссельной заслонки, не применяются. стреляет топором ios запрос.

Как я могу написать глобальные запросы ограничения функции loda sh для компонентов?

Обратите внимание, что одна и та же функция vuex вызывается для проверки данных во всех компонентах. Текущий код действия vuex выглядит следующим образом. Дроссель loda sh не работает для приведенного ниже кода.

 validateData({ dispatch }) {
    throttle(async function() {
      dispatch("validateDataFromServer");
    }, 25000)();
  },


  async validateDataFromServer({ commit, state }) {

   //The actual axios call goes here.

  }

1 Ответ

1 голос
/ 12 февраля 2020

Я бы попытался создать функцию регулирования с учетом действия vuex, которое вы хотите регулировать, а затем использовать возвращенную функцию регулирования в хранилище vuex в качестве самого действия. Таким образом, функция удушения должна быть глобальной для всех компонентов. ( проверено! См. Пример ниже )

// store.js
import { throttle } from "lodash";

const actions = {
  validateDataFromServer : throttle(async function ({ commit, state}) {

    //The actual axios call goes here.

  }, 25000)
}

Рабочий пример

Так как у OP были проблемы, я создал быстрый живой пример. В этом примере у меня есть несколько экземпляров кнопки, которая запускает действие vuex при нажатии. Само действие vuex регулируется через loda sh и неважно, какую кнопку я нажимаю, метод будет регулироваться, как глобально, и будет срабатывать только каждые 10 секунд (в этом примере).

https://codesandbox.io/s/stoic-sunset-dop3y

...