🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

React:在表单元素事件处理上应用 Throttle 或 Debounce

在介绍 React 表单使用的时候,我们创建一个 HelloForm 组件,组件里用了一个文本框,监听了文本框的 change 事件,用 handleChange 来处理这个事件。在这个事件处理里面,输出了文本框里面发生变化的值。有些动作我们不想执行的那么勤快,有一点点变化就去执行一些任务,这样太浪费。比如你想实时地把用户输入的内容保存在后端数据库里,后端可能受不大了,我们得去做点限制。可以用 Throttle 或 Debounce。

在 Lodash 这个库里有可以创建  Throttle 或 Debounce 函数的方法。先给项目安装一下 Lodash:

yarn add lodash

在项目文件里,可以直接导入 Lodash 的 ThrottleDebounce 。像这样:

import throttle from 'lodash/throttle'
import debounce from 'lodash/debounce'

然后去改造一下 HelloForm 这个组件,先改造一下 handleChange 这个事件处理:

 handleChange = (event) => {
   event.persist()

   this.setState({
     text: event.target.value
   })

   this.log(event)
 }

然后在组件里添加一个 constructor 方法,内容是:

 constructor(props) {
   super(props)

   this.log = debounce((event) => {
     console.log(event.target.value)
   }, 1000)
 }

这里我们用了 debounce 去创建了一个函数,设置了延迟时长为 1 秒钟。现在,会有神奇的事情发生。在应用界面上的文本框输入点内容,注意控制台上输出的东西。

debounce 换成 throttle 再试一下。

React

评论

棒棒棒

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点