无法在Vuex中的其他动作中消除动作

时间:2018-12-30 11:31:31

标签: vue.js vuejs2 lodash vuex vuex-modules

我正在尝试消除动作中的任何东西,它会以一种或另一种方式被吞噬...

使用此(伪)代码:

import { debounce } from "lodash";

const actions = {
  debounceSomeLogging ({ dispatch }, text) {
    console.log("Outside debounced function.");
    debounce(function() {
      console.log("Inside debounced function.");
      dispatch("doRealThing");
    }, 1000);
  },

  doRealThing({ commit }) {
    // Whatever
  }
}

调用该操作时,我看到了Outside debounced function,但是看不到其他日志记录,也没有触发其他操作。

任何人都对此有经验,可以指出正确的方向吗?

2 个答案:

答案 0 :(得分:1)

这应该确定工作

import { debounce } from "lodash";

const actions = {
  debounceSomeLogging: debounce(({ dispatch }, text) => {
    console.log("Inside debounced function.");
    dispatch("doRealThing");
  }, 1000),

  doRealThing({ commit }) {
    // Whatever
  }
}

答案 1 :(得分:0)

正如nemesv在评论中指出的那样,debounce函数不会调用内部函数。因此,您需要再次调用反跳,就像这样:

debounce(function() {
  console.log("Inside debounced function.");
  dispatch("doRealThing");
}, 1000)();

因此,简而言之,它应该像这样:

debounce(...)()而不是像这样的debounce(...)