javascript - redux thunk 中的 debounce 方法

标签 javascript redux redux-thunk

我在里面有异步方法的 Action ,我想去抖动它

export const onSearchChange = query => dispach => {
    if (query === "") {
        dispach({ type: SOME_TYPE, payload: query })
    } else {
        dispach({ type: SOME_TYPE, payload: query })
        searchProductsCall(query).then(payload => {
            dispach({ type: SOME_OTHER_TYPE, payload })
        })
    }
}

如何使用 lodash 或其他东西去抖动 searchProductsCall

最佳答案

您需要先创建去抖函数并调用该函数而不是您的 searchProductsCall

以下代码应确保在所有情况下都立即调用第一个分派(dispatch)(它可能会更改 UI?)并且它仅在去抖之后和非-空查询。

export const debouncedSearchProductsCall = _.debounce((query, dispatch) => {
    if (query !== "") {
        searchProductsCall(query).then(payload => {
            dispatch({ type: SOME_OTHER_TYPE, payload })
        });
    }
}, 200);

export const onSearchChange = query => dispatch => {
    dispatch({ type: SOME_TYPE, payload: query });
    debouncedSearchProductsCall(query, dispatch);
}

关于javascript - redux thunk 中的 debounce 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493683/

相关文章:

javascript - 如何将 api 调用包装器从 redux thunk 迁移到 redux saga

javascript - jQuery 菜单列表到面包屑

javascript - 根据所选框单击提交按钮时网址未打开

javascript - 如何使用 vue + vuex(或任何其他状态管理框架)处理游戏循环

javascript - 没有requirejs如何使用redux?

javascript - Redux thunk,将其用作列表或对象之间的区别

reactjs - 获取状态并从中间件进行调度

javascript - Constructor.prototype 不在原型(prototype)链中?

javascript - 如何使用存储在亚马逊网络服务上的 jquerycropper 编辑图像?

reactjs - 如果用户可以更改状态,如何在 React 中实现访问控制