3

我有一个自动完成组件,它需要来自两个独立 API 的结果。两个 API 都需要与一个去抖动周期一起调用,因为它是自动完成的。我正在使用 react-redux 和 redux-api。这就是我到目前为止所拥有的。请参阅我返回的 Search 方法。问题是只有一个调用发生。

在我的 AutoCompleteContainer.js

const mapDispatchToProps = dispatch => {
  const debounceDispatch = debounce(dispatch, 500);
  return {
    search(term) {
      return Promise.all([
        // Fix me! Only one of the calls below happens. 
        debounceDispatch(rest.actions.suggestions({ q: term })),
        debounceDispatch(rest.actions.concepts({ corpus: 'desc', term: [term] }))
      ]);
    },
    async reset() {
      await dispatch(rest.actions.suggestions.reset());
      await dispatch(rest.actions.concepts.reset());
    }
  };
};

我应该在组件级别去抖动吗?或者这可以在这里完成吗?

4

1 回答 1

3

您需要有一个分派这两个动作的函数,然后用debounce.

所以是这样的:

const handleAutocomplete = () => {
  dispatch(rest.actions.suggestions({ q: term })),
  dispatch(rest.actions.concepts({ corpus: 'desc', term: [term] }))
}

const debounceHandleAutocomplete = debounce(handleAutocomplete,500)
于 2017-11-02T03:09:21.373 回答