javascript - Lodash debounce 触发每一个变化

标签 javascript reactjs redux react-redux lodash

我正在尝试通过 React 中的输入更改来消除发送 Redux Action 的抖动。

const debouncedSubmit = debounce(() => dispatch(new TaskAnswerSubmit({index: props.index, text: answer})), 1000)

function onChange(e){
    setAnswer(e.target.value)
    debouncedSubmit()
}

这会延迟发送 Action ,但仍会为每次按键发送一个 Action 。我想在输入完成后稍等片刻,然后再发送一次操作。

我在这里做错了什么?

最佳答案

我相信这里发生的情况是每次按键都会导致重新渲染,并且在每次渲染期间它都会创建一个新的 debouncedSubmit 函数,并且每个函数都会触发。尝试使用 React 的 useCallback 方法来内存函数,这样它就不会在重新渲染时重新创建:

const debouncedSubmit = useCallback(debounce(() => dispatch(new TaskAnswerSubmit({index: props.index, text: answer})), 1000), []);

关于javascript - Lodash debounce 触发每一个变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60517174/

相关文章:

javascript - 在react+redux应用程序的Home组件中,在componentdidmount上调用action getPosts()后,this.props.posts未定义

javascript - 强大的 JavaScript Canvas 库

javascript - react 错误 : "SharedArrayBuffer is not defined" in Firefox

javascript - 使用 ...spread,但 redux 仍然会发出有关状态突变的警告

javascript - React 无法读取未定义的属性 'lastName'

reactjs - 在 React 自定义 Hook 中 onChange 时验证输入的最佳实践?

reactjs - 如何在 Redux 中为每个实例创建一个存储?

javascript - 如何通过下拉列表筛选 Tableau 工作簿?

javascript - 错误数据表 : Individual Select When Using innerHTML

相当于 jquery ajaxStop 的 Javascript