redux thunk 中的 debounce 方法
debounce method inside redux thunk
我在内部使用异步方法执行操作,我想对其进行去抖动
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
。
以下代码应确保在所有情况下都立即调用第一个调度(它可能会更改 UI?)并且它仅在去抖动之后调用 searchProductsCall
是一个非空查询。
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);
}
我在内部使用异步方法执行操作,我想对其进行去抖动
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
。
以下代码应确保在所有情况下都立即调用第一个调度(它可能会更改 UI?)并且它仅在去抖动之后调用 searchProductsCall
是一个非空查询。
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);
}