代码之家  ›  专栏  ›  技术社区  ›  Alexey K

Redux Thunk内的解包方法

  •  0
  • Alexey K  · 技术社区  · 7 年前

    我在内部使用异步方法进行操作,我想取消对它的限制。

    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 })
            })
        }
    }
    

    我怎么能脱铃呢 searchProductsCall 使用 lodash 或者别的什么?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Narigo    7 年前

    您需要先创建去缓冲函数,然后调用该函数,而不是调用 searchProductsCall .

    以下代码应确保在所有情况下都立即调用第一个分派(它可能会更改UI?)它称之为 搜索产品 只有在Debounce之后以及存在非空查询时。

    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);
    }