reactjs - 如何消除最终形式的字段?

标签 reactjs throttling debouncing react-final-form final-form

这是一个非常常见的查询,但我对新的 final-form 库有点困惑。我曾经使用 redux-form 但这个新版本太不同了。

我的需求很简单,我想在用户写入某些文本时调度搜索,但我想向字段添加一个throttle

这是对 lib react-final-form-listeners 的第一次尝试,但是正如您将看到的,当您在文本字段中写入时,去抖不起作用:/

https://codesandbox.io/embed/react-final-form-simple-example-khkof

最佳答案

首先,我鼓励您在不使用模糊的包层的情况下完成所有这些操作。这将帮助您真正理解流程,但是,尽管如此,您还是可以在输入更改时调用函数:

  • debounce(仅当用户停止输入 500 毫秒时执行一次)
  • throttle(批量然后每 500 毫秒执行一次)
  • 正常(在每次输入更新时执行)

在本例中,我只是在渲染方法之外创建了一个去抖函数。当使用类而不是钩子(Hook)时,情况会有所不同:

Hook :

const handleSearch = debounce(searchText => { ... }, 500);

类(或者您可以在构造函数中对类字段进行反跳,两者都可以):

class Example extends Component {
  handleSearch = debounce(searchText => { ... }, 500)

  render = () => { ... }
}

工作示例(在codesandbox控制台打开时键入):

Edit 🏁 React Final Form - Simple Example

<小时/>

去抖动、 throttle 和正常执行之间的区别:

enter image description here

<小时/>

与上面相同,减去 react-final-formreact-final-form-listeners (项目中少了两个依赖项!):

工作示例(在codesandbox控制台打开时键入):

Edit Simple Form - Simple Example

<小时/>

关于reactjs - 如何消除最终形式的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57329357/

相关文章:

http - 向某些 HTTP(s) 资源发出请求的多个 AWS Lambda 是否会被检测为限制?

jquery - 如何格式化 Ben Alman 的 jQuery Debounce

javascript - 通过忽略除最后一次使用 lodash 之外的所有调用来消除抖动

node.js - "offset"的值超出范围。它必须 >= 0 && <= 17825792

javascript - 从 vanilla JS 调用 React Router

javascript - 大型react-redux表单应用程序

c# - WPF 的 CPU throttle 问题

python - TastyPie throttle - 按用户还是按 IP?

javascript - react native 的按钮文本总是大写

angularjs - Angular js中点击事件的去抖