首先,我鼓励您在不使用模糊的包层的情况下完成所有这些操作。这将帮助您真正了解流程,但是,以下是在输入更改时调用函数的方法:
- debounce(仅在用户停止输入 500 毫秒时执行一次)
- 油门(批处理然后每 500 毫秒执行一次)
- 正常(在每次输入更新时执行)
在这种情况下,我只是在 render 方法之外创建了一个 debounced 函数。这在使用类而不是钩子时会有所不同:
挂钩:
const handleSearch = debounce(searchText => { ... }, 500);
类(或者您可以在 中对类字段进行去抖动constructor
,或者工作):
class Example extends Component {
handleSearch = debounce(searchText => { ... }, 500)
render = () => { ... }
}
工作示例 (在代码框控制台打开时键入):

去抖动、节流和正常执行的区别:

和上面一样,减去react-final-form
和react-final-form-listeners
(你的项目中少了两个依赖项!):
工作示例(在代码框控制台打开时键入):
